أردت فقط مشاركة الخطوات التي قمت بها، لإعداد مجلد فرعي مع Cloudflare، خاصة عندما يكون الموقع الرئيسي قيد التشغيل بالفعل ولا يمكن توجيه النطاق الجذر إلى خادم المنتدى (حتى مؤقتًا).
نقاط رئيسية
mywebsite.comالحالي يشير حاليًا إلى1.1.1.1وهو قيد التشغيل- يجب علينا توجيه
mywebsite.com/forum(والمجلدات الفرعية الخاصة به) إلى2.2.2.2 - نظرًا لأنه لا يمكننا اجتياز التحقق من letsencrypt أثناء تثبيت discourse (الذي يتحقق مما إذا كان النطاق يحل إلى الخادم الحالي) ، يجب علينا استخدام التحقق من DNS
تغييرات في app.yml
تحديثات Letsencrypt
قم بإنشاء قالب letsencrypt جديد واضبطه في app.yml وفقًا لهذا الموضوع: LetsEncrypt DNS Validation Template Using Cloudflare
ومع ذلك ، تأكد من نسخ طريقة issue_cert فقط من هذا المنشور ، وخذ بقية المحتوى من web.letsencrypt.ssl.template.yml الأصلي (حيث تم تغييره بعد نشر الموضوع).
LETSENCRYPT_CF_TOKEN: ""
LETSENCRYPT_CF_ACCOUNT_ID: ""
LETSENCRYPT_CF_ZONE_ID: ""
LETSENCRYPT_DNS_PROVIDER: "dns_cf"
- يمكنك إنشاء رمز cloudflare من صفحة CF My profile → “API Tokens”.
- يتم عرض معرف الحساب ومعرف المنطقة في صفحة نظرة عامة للنطاق.
- اترك قيمة مزود DNS كما هي أعلاه
تحديثات المجلد الفرعي
وفقًا لهذا الموضوع Serve Discourse from a subfolder (path prefix) instead of a subdomain اضبط DISCOURSE_RELATIVE_URL_ROOT: /forum تحت env: وقم بتحديث قسم run:.
لاحظ هذا المنشور لعناوين IP للمستخدمين: Serve Discourse from a subfolder (path prefix) instead of a subdomain - #111 by varun21
إعادة البناء
بعد تغيير app.yml لتشغيل أمر إعادة البناء ، نحتاج إلى تخطي فحص discourse للنطاق لحل عنوان IP للخادم الحالي (نظرًا لأن mywebsite.com الخاص بنا يشير بالفعل إلى 1.1.1.1 ، ويتحقق discourse من النطاق الجذر) ، لهذا قم بتشغيل:
./launcher rebuild app --skip-connection-test
إعداد Cloudflare
أعلم أن بعض الأشخاص يوصون باستخدام Workers لتوجيه /forum إلى 2.2.2.2 ، ومع ذلك وجدت أنه أسهل بكثير القيام بذلك باستخدام موازنة التحميل. مع Workers لم أتمكن من حل المشكلات المتعلقة بـ css/js على أي حال ، حتى مع تعطيل rocket loader والإعدادات الأخرى المماثلة. لذلك،
- قم بتنشيط موازنة التحميل (ضمن Traffic)
- حدد “Manage Pools” → “Create”
- قم بإنشاء مجموعتين (للموقع الرئيسي وللمنتدى) ، يجب أن تحتوي كل منهما على نقطة نهاية واحدة فقط
- قم بإنشاء موازن تحميل ، يجب أن يكون اسم المضيف
mywebsite.com - ضمن قسم نقاط النهاية ، اختر كلا المجموعتين
- تخطى المراقبات (نظرًا لأننا لا نحتاج إلى مراقبة صحة الخادم ، يجب أن يشير الموقع الرئيسي دائمًا إلى
1.1.1.1والمنتدى إلى2.2.2.2) ، تخطى توجيه حركة المرور (الافتراضي هو إيقاف التشغيل) - ضمن Custom Rule ، قم بإنشاء واحدة بشرط المسار كـ
/forumووجهها إلى نقطة نهاية المنتدى
- حفظ/نشر
ملاحظات
- لسبب ما ، لم ينجح نسخ عينة app.yml ثم إعادة البناء بالنسبة لي (ربما كنت أفعل شيئًا خاطئًا). لذلك ، كحل ، قمت بتشغيل discourse-setup لأول مرة بنطاق آخر ثم ، جنبًا إلى جنب مع تغييرات app.yml الأخرى المذكورة أعلاه ، قمت بتغيير اسم المضيف وقمت بإعادة البناء النهائية.
- يقوم Discourse بإنشاء شهادتين من letsencrypt ،
RSA certوECDSA cert، ولدى letsencrypt حد أقصى 5 شهادات لكل نطاق مطابق في الأسبوع ، إذا ارتكبت خطأ مرتين متتاليتين ، فستصدر المحاولة الثالثة شهادة واحدة فقط ، ولن يعمل المنتدى (يمكنك التحقق من الحد الحالي باستخدام هذا البرنامج النصي GitHub - sahsanu/lectl: Script to check issued certificates by Let's Encrypt on CTL (Certificate Transparency Log) using https://crt.sh). - موازنة التحميل CF ليست مجانية ، ومع ذلك بالنظر (حتى الآن) إلى تكلفة 5 دولارات لكل 500 ألف طلب DNS ، أعتقد أنها تستحق ذلك ، مقارنة بالمتاعب مع nginx وما إلى ذلك.

