بيان رسمي من Discourse حول إعدادات المجلد الفرعي
نحن ندعم إعدادات المجلدات الفرعية لعملائنا المستضافين على مستوى المؤسسات وما فوق. بسبب التعقيد التقني الكبير، نوصي بشدة بعدم استخدام هذا الإعداد إلا إذا كنت خبيراً جداً في إعدادات المجلدات الفرعية المخصصة.
من الضروري أن يكون لديك فهم عميق لـ:
- إعداد NGINX في حاوية Discourse Docker
- إعادة توجيه عنوان IP الأصلي بشكل آمن باستخدام رؤوس مخصصة في سلسلة البروكسي
- تحديد معدل الطلبات في خادم البروكسي الأمامي
إذا بدا كل هذا غريباً وغير مألوف لك، نوصي بشدة بتجنب هذا الإعداد.
لتقديم Discourse من مجلد فرعي (أي مع بادئة مسار) على نطاقك، مثل https://www.example.com/=SUBFOLDER=، إليك كيفية القيام بذلك!
إعداد Docker
في قسم env من ملف yml الخاص بحاوية docker الخاصة بك، أضف إعداد DISCOURSE_RELATIVE_URL_ROOT مع المجلد الفرعي الذي تريد استخدامه. تأكد من أنه لا ينتهي بـ /.
تعديل هذا سيحدث الدليل بأكمله.
env:
...
DISCOURSE_RELATIVE_URL_ROOT: /=SUBFOLDER=
يحتاج قسم run إلى بعض التغييرات لإرسال جميع مسارات Discourse إلى المكان الصحيح. إليك قسم run كامل يدعم المجلدات الفرعية:
run:
- exec:
cd: $home
cmd:
- mkdir -p public/=SUBFOLDER=
- cd public/=SUBFOLDER= && ln -s ../uploads && ln -s ../backups
- replace:
global: true
filename: /etc/nginx/conf.d/discourse.conf
from: proxy_pass http://discourse;
to: |
rewrite ^/(.*)$ /=SUBFOLDER=/$1 break;
proxy_pass http://discourse;
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: etag off;
to: |
etag off;
location /=SUBFOLDER= {
rewrite ^/=SUBFOLDER=/?(.*)$ /$1;
}
- file:
path: /etc/nginx/conf.d/outlets/server/set-real-ip-from-webroot.conf
chmod: 644
contents: |
set_real_ip_from 123.456.789.ABC; # عنوان IP لبروكسيك العلوي
- file:
path: /etc/nginx/conf.d/outlets/server/real-ip-header.conf
chmod: 644
contents: |
real_ip_header x-forwarded-for;
لمزيد من التفاصيل حول الحفاظ على عنوان IP للمستخدم النهائي، راجع Handling the "chain of trust" of the end user's real IP.
بعد إجراء هذه التغييرات، قم بتهيئة حاوية Docker الخاصة بك كما هو معتاد، أو أعد إنشائه إذا كنت تقوم بتغيير حاوية موجودة.
./launcher bootstrap app
أو
./launcher rebuild app
مرفق مثال كامل لملف yml لحاوية مستقلة:
subfolder-sample.yml (3.1 KB)
مخاوف تتعلق بتحديد المعدل
إذا كنت تذهب لهذا الإعداد، فمن المحتمل أنك تريد تحديد معدل الطلبات قبل وصولها إلى NGINX في الحاوية، مما يعني أنك على الأرجح ستتجنب استخدام قالبنا لتحديد المعدل. من الصعب جداً تكوين NGINX في الحاوية لتحديد المعدل على عنوان IP معاد تعيينه، وسيتطلب ذلك تغييرات معقدة في القالب.
المنشورات الموجودة
إذا قمت بذلك مع موقع موجود كان على نطاق فرعي، ستجد أن عمليات الرفع الخاصة بك معطلة. هناك أداة يمكن أن تساعد في إصلاح جميع المسارات لتشمل المجلد الفرعي. أولاً، ادخل إلى حاوية Docker وانتقل إلى دليل Discourse:
cd /var/discourse
./launcher enter app
cd /var/www/discourse
ثم قم بتشغيل أمر إعادة التعيين بعد أخذ نسخة احتياطية:
RAILS_ENV=production bundle exec script/discourse remap '/uploads' '/=SUBFOLDER=/uploads'
راجع أيضاً: Use a subfolder (path prefix) to serve Discourse with multiple servers sharing a domain للحصول على إعدادات أكثر غرابة.
robots.txt
الآن بعد أن يعمل Discourse في مجلد فرعي، لا يمكنه تقديم ملف robots.txt الخاص به للتحكم في المسارات التي يتم زحفها بواسطة متصفحات الويب. ستكون المتصفحات تنظر إلى ملف robots.txt لموقعك الرئيسي (https://www.example.com/robots.txt). تحتاج إلى نسخ محتويات ملف robots.txt الخاص بـ Discourse (الموجود في https://www.example.com/=SUBFOLDER=/robots.txt) ووضعه في ملف robots.txt لموقعك الرئيسي.