استخدام Discourse مع Cloudflare
يشرح هذا الدليل كيفية تكوين واستخدام Discourse مع Cloudflare، بما في ذلك أفضل ممارسات الأمان ونصائح استكشاف الأخطاء وإصلاحها.
مستوى المستخدم المطلوب: مسؤول (Administrator)
يتطلب الوصول إلى وحدة التحكم (Console) للتثبيتات المستضافة ذاتيًا
ملخص
يمكن لـ Cloudflare تعزيز مثيل Discourse الخاص بك من خلال تحسين الأداء عبر شبكة توصيل المحتوى (CDN)، وطبقات أمان إضافية مثل الحماية من هجمات DDoS، ودعم HTTPS. يغطي هذا الدليل عملية الإعداد وأفضل الممارسات للتكوين الأمثل.
لماذا نستخدم Cloudflare مع Discourse
يوفر استخدام Cloudflare مع مثيل Discourse الخاص بك العديد من المزايا الرئيسية:
- الأداء: يمكن لشبكة توصيل المحتوى (CDN) الخاصة بـ Cloudflare تحسين الوصول العالمي إلى الأصول الشائعة، مما يعزز تجربة المستخدم على مستوى العالم (المصدر)
- الأمان: طبقات حماية إضافية تشمل:
- الحماية من هجمات DDoS (المصدر)
- دعم HTTPS (المصدر) (بديل لإعداد Let’s Encrypt الخاص بـ Discourse)
بالنسبة للتثبيتات المستضافة ذاتيًا، بينما يقدم Cloudflare هذه المزايا، فإنه يضيف تعقيدًا إلى الإعداد الخاص بك.
إعداد Cloudflare
- تعرف على أساسيات Cloudflare
- اتبع إرشادات الإعداد لتكوين Cloudflare لنطاقك والحصول على مزايا الأمان والأداء والموثوقية
أفضل ممارسات التكوين
إعدادات DNS
- تأكد من تمرير سجلات DNS التي تشير إلى مثيل Discourse الخاص بك (أي أن يكون الرمز برتقاليًا)
- يمكنك الوصول إلى إعدادات DNS عبر
dash.cloudflare.com/?to=/:account/:zone/dns
تكوين SSL/TLS
- اضبط وضع التشفير على “Full (strict)” (كامل (صارم))
- يمكنك الوصول إلى إعدادات SSL/TLS عبر
dash.cloudflare.com/?to=/:account/:zone/ssl-tls
قد يتسبب تكوين SSL/TLS غير الصحيح في حدوث حلقات إعادة توجيه (redirect loops)
تكوين التخزين المؤقت (Caching)
- اضبط مستوى التخزين المؤقت على “Standard” (قياسي)
- يمكنك الوصول إلى إعدادات التخزين المؤقت عبر
dash.cloudflare.com/?to=/:account/:zone/caching/configuration
قواعد التخزين المؤقت (Cache Rules)
قامت Cloudflare بإلغاء قواعد الصفحة (Page Rules) لصالح نظام القواعد (Rules) الحديث الخاص بها. قم بإنشاء ما يلي باستخدام قواعد التخزين المؤقت (Cache Rules) عبر dash.cloudflare.com/?to=/:account/:zone/rules:
- اضبط مستوى التخزين المؤقت على “Bypass” (تجاوز) لـ
community.example.com/session/* - قم بتكوين إعدادات تسوية عنوان URL لتطبيع عناوين URL الواردة
إعدادات الشبكة
إعدادات الشبكة المتوفرة عبر dash.cloudflare.com/?to=/:account/:zone/network لا تؤثر بشكل عام على وظائف Discourse. لا يستخدم Discourse بروتوكولات WebSockets أو gRPC أو رؤوس CF-IPCountry / True-Client-IP. يمكن ترك هذه الإعدادات على قيمها الافتراضية ما لم يتطلب برنامج آخر على نفس النطاق تكوينًا محددًا.
إعدادات جدار حماية تطبيقات الويب (WAF)
إذا كانت خطة Cloudflare الخاصة بك تدعم القواعد المُدارة (Managed Rules)، فأنشئ ما يلي:
- تجاوز WAF عند إنشاء/تحرير المشاركات:
(starts_with(http.request.uri.path, "/posts") and http.request.method in {"POST" "PUT"})
- لمستخدمي المكون الإضافي مستكشف البيانات (Data Explorer plugin)، تجاوز WAF عند الاستعلامات الإدارية:
((http.request.uri.path contains "/admin/plugins/explorer/queries/" or http.request.uri.path contains "/admin/plugins/discourse-data-explorer/queries/") and http.request.method eq "PUT")
لكلا القاعدتين:
- اختر “تجاوز جميع القواعد المتبقية” (Skip all remaining rules)
- قم بتمكين “تسجيل الطلبات المطابقة” (Log matching requests)
إذا كنت مشتركًا في خطة Business أو أعلى، يمكنك استخدام المعامل
matchesللتعبير العادي (regex) للحصول على تطابق أكثر دقة. عاملاstarts_withوcontainsالمستخدمان أعلاه يعملان على جميع الخطط بما في ذلك Free و Pro.يمكنك الوصول إلى إعدادات WAF عبر
dash.cloudflare.com/?to=/:account/:zone/firewall/managed-rules
تحسين المحتوى
قم بتكوين ما يلي عبر dash.cloudflare.com/?to=/:account/:zone/speed/optimization:
- قم بتمكين Brotli
- قم بتعطيل Rocket Loader™
يتلقى Discourse تقارير متكررة عن تعطل الموقع بسبب تمكين Rocket Loader™
تكوين إضافي للتثبيتات المستضافة ذاتيًا
لضمان التمرير الصحيح لعنوان IP، أضف ما يلي إلى قسم القوالب في ملف containers/app.yml الخاص بك:
- "templates/cloudflare.template.yml"
بعد إضافة القالب، يجب عليك إعادة بناء الحاوية باستخدام
./launcher rebuild appحتى تدخل التغييرات حيز التنفيذ.
ذات صلة: كيف تقوم بإعداد Cloudflare؟
موارد الدعم
استكشاف الأخطاء وإصلاحها
مشكلات سياسة أمان المحتوى (CSP)
إذا واجهت أخطاء CSP:
- تحقق من أن Rocket Loader معطل
- تأكد من إضافة البرامج النصية بشكل صحيح إلى إعداد موقع
content security policy script src
وظيفة OneBox
إذا تم حظر OneBox:
- تحقق مما إذا كان وضع “Super Bot Fight Mode” ممكّنًا
- اضبط الإعداد “Definitely automated” إذا تم تعيينه على “Managed” (مُدار) أو “Block” (حظر)
- فكر في إنشاء قاعدة WAF مخصصة لـ وكيل مستخدم OneBox



