إنتقل إلى المحتوى الرئيسي

إعداد DNS Wildcard

يتيح DNS Wildcard إنشاء نطاقات فرعية للمستأجرين مثل acme.yourdomain.com وtechcorp.yourdomain.com وغيرها. هذا الإعداد اختياري — يعمل FeedbackPulse بشكل طبيعي مع عناوين URL المستندة إلى الـ slug (مثل /wall/acme-corp) دون الحاجة إلى DNS Wildcard.


هل أحتاج إلى DNS Wildcard؟

السيناريوهل تحتاج DNS Wildcard؟
يستخدم المستأجرون صفحات عامة مستندة إلى الـ slug (/wall/acme-corp)لا
يريد المستأجرون نطاقًا فرعيًا خاصًا بهم (acme.yourdomain.com)نعم
يستخدم المستأجرون نطاقًا مخصصًا خاصًا بهم (feedback.acme.com)لا (استخدم CNAME بدلاً من ذلك)

ما تحتاجه

  1. سجل A لـ DNS Wildcard: *.yourdomain.com → عنوان IP الخادم
  2. شهادة SSL Wildcard: تغطي *.yourdomain.com
  3. إعداد خادم الويب: لقبول جميع النطاقات الفرعية

الخطوة 1: إضافة سجل DNS

انتقل إلى لوحة إدارة DNS لدى مزود النطاق الخاص بك وأضف:

النوعالاسم/المضيفالقيمةTTL
A*123.456.789.0 (عنوان IP الخادم)300

تحتاج أيضًا إلى سجل A العادي للنطاق الرئيسي:

النوعالاسم/المضيفالقيمة
A@123.456.789.0

تعليمات خاصة بكل مزود

Cloudflare

  1. سجّل الدخول إلى لوحة تحكم Cloudflare
  2. اختر نطاقك
  3. انتقل إلى DNSRecords
  4. انقر Add Record
  5. النوع: A | الاسم: * | IPv4: عنوان IP الخادم | البروكسي: DNS only (السحابة الرمادية)
  6. انقر Save

مهم: بالنسبة للنطاقات الفرعية Wildcard، اضبط بروكسي Cloudflare على DNS only (السحابة الرمادية) وليس Proxied (السحابة البرتقالية). لا يدعم الخطة المجانية من Cloudflare توجيه النطاقات الفرعية Wildcard.

Namecheap

  1. سجّل الدخول → Domain ListManage لنطاقك
  2. انتقل إلى Advanced DNS
  3. انقر Add New Record
  4. النوع: A Record | المضيف: * | القيمة: عنوان IP الخادم | TTL: Automatic
  5. احفظ

GoDaddy

  1. سجّل الدخول → My ProductsDNS لنطاقك
  2. انقر Add Record
  3. النوع: A | الاسم: * | القيمة: عنوان IP الخادم | TTL: 600
  4. احفظ

Google Domains / Google Cloud DNS

  1. انتقل إلى Google Domains
  2. اختر نطاقك → DNS
  3. تحت Custom Records، أضف:
  4. المضيف: * | النوع: A | البيانات: عنوان IP الخادم
  5. احفظ

AWS Route 53

  1. انتقل إلى Route 53Hosted Zones → اختر نطاقك
  2. انقر Create Record
  3. اسم السجل: * | نوع السجل: A
  4. القيمة: عنوان IP الخادم | TTL: 300
  5. انقر Create Records

DigitalOcean DNS

  1. انتقل إلى NetworkingDomains
  2. اختر نطاقك
  3. أضف: النوع A | اسم المضيف * | الوجهة: عنوان IP الخادم | TTL: 300

Hetzner DNS

  1. انتقل إلى Hetzner DNS Console
  2. اختر منطقتك
  3. أضف سجلاً: النوع A | الاسم * | القيمة: عنوان IP الخادم

الخطوة 2: الحصول على شهادة SSL Wildcard

الخيار أ: Let's Encrypt مع تحدي DNS (مجاني)

تتطلب شهادات Wildcard من Let's Encrypt تحدي DNS-01 (وليس HTTP):

# تثبيت Certbot مع إضافة DNS لمزودك
# مثال: Cloudflare
sudo apt install certbot python3-certbot-dns-cloudflare

# إنشاء ملف بيانات اعتماد Cloudflare
sudo mkdir -p /etc/letsencrypt
sudo nano /etc/letsencrypt/cloudflare.ini

أضف رمز API الخاص بـ Cloudflare:

dns_cloudflare_api_token = your_cloudflare_api_token_here
sudo chmod 600 /etc/letsencrypt/cloudflare.ini

# الحصول على شهادة Wildcard
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
-d yourdomain.com \
-d "*.yourdomain.com"

إضافات DNS لمزودين آخرين

المزودإضافة Certbotالتثبيت
Cloudflarepython3-certbot-dns-cloudflaresudo apt install python3-certbot-dns-cloudflare
Route 53python3-certbot-dns-route53sudo apt install python3-certbot-dns-route53
DigitalOceanpython3-certbot-dns-digitaloceansudo apt install python3-certbot-dns-digitalocean
Google Cloudpython3-certbot-dns-googlesudo apt install python3-certbot-dns-google

الخيار ب: تحدي DNS اليدوي

إذا لم يكن لمزود DNS الخاص بك إضافة Certbot:

sudo certbot certonly --manual --preferred-challenges dns \
-d yourdomain.com -d "*.yourdomain.com"

سيطلب منك Certbot إنشاء سجل TXT. اتبع التعليمات الظاهرة.

تنبيه التحدي اليدوي: ستحتاج إلى التجديد يدويًا كل 90 يومًا وتحديث سجل DNS TXT في كل مرة.

الخيار ج: شهادة Wildcard مدفوعة

اشترِ من مزودين مثل:

  • Comodo/Sectigo (~70 دولار/سنة)
  • DigiCert (~400 دولار/سنة)
  • RapidSSL (~125 دولار/سنة)

الخطوة 3: إعداد خادم الويب

راجع أقسام Wildcard في:

المفتاح: استخدم ServerAlias *.yourdomain.com (في Apache) أو server_name yourdomain.com *.yourdomain.com; (في Nginx).


الخطوة 4: التحقق من عمل الإعداد

# اختبار حل DNS لنطاق فرعي
dig test.yourdomain.com

# يجب أن يُرجع عنوان IP الخادم في قسم ANSWER

# الاختبار باستخدام curl
curl -I https://anything.yourdomain.com
# يجب أن يُرجع 200 أو إعادة توجيه (وليس "could not resolve host")

الخطوة 5: إعداد FeedbackPulse

حدّث ملف .env الخاص بك:

# تعيين نطاق الجلسة للسماح بالكوكيز عبر النطاقات الفرعية
SESSION_DOMAIN=.yourdomain.com

# عنوان URL الرئيسي للتطبيق (بدون نطاق فرعي)
APP_URL=https://yourdomain.com

لاحظ النقطة البادئة في SESSION_DOMAIN=.yourdomain.com — تتيح هذه النقطة عمل كوكيز الجلسة عبر جميع النطاقات الفرعية.


كيف تعمل النطاقات الفرعية في FeedbackPulse

عند وصول طلب إلى acme.yourdomain.com:

  1. يستخرج الـ middleware الخاص بـ ResolveTenant النطاق الفرعي (acme)
  2. يبحث عن المستأجر بـ subdomain = 'acme'
  3. إذا وُجد، يُعيَّن المستأجر بوصفه السياق الحالي
  4. يرى المستخدم صفحة تسجيل الدخول أو لوحة التحكم الخاصة بالمستأجر

يحدد المستأجرون نطاقهم الفرعي أثناء التسجيل. يمكنك أيضًا تعيينه يدويًا من لوحة الإدارة.


الخطوات التالية