ملخص
اعتبارًا من هذا الالتزام، يتضمن تكوين nginx الافتراضي لـ Discourse ما يُعرف بـ “المنافذ” - وهي طريقة مدعومة لإدخال عبارات إضافية في تكوين nginx في أماكن مناسبة.
يمكّن هذا التغيير نهجًا أكثر قوة لإدارة تكوين وسلوك خادم الويب حيث كنا نعتمد سابقًا على أوامر بحث/استبدال هشة نسبيًا.
بمرور الوقت، سنقوم بتكييف قوالب التكوين الخاصة بنا لاستخدام المنافذ.
الاستخدام
هناك ثلاثة أقسام منافذ مدعومة:
before-server: عبارات تكوين سياقhttpserver: عبارات تكوين سياقserverdiscourse: عبارات تكوين سياقlocation- يتم تطبيق هذه على الطلبات المعاد توجيهها إلى Discourse
أمثلة
فيما يلي بعض الأمثلة حول كيفية استخدام هذه المنافذ في ملف تكوين app.yml الخاص بك لتحقيق الأهداف.
يمكن إضافة هذه إلى أي مكان يمكنك فيه استخدام أمر run أو file؛ توصيتي هي القيام بذلك في خطاف after_code حتى يتمكن إعادة البناء من الفشل بسرعة إذا كان هناك خطأ في بناء الجملة.
إضافة رأس استجابة
يضيف هذا المثال رأسًا إلى كل استجابة يتم إعادة توجيهها إلى Discourse:
hooks:
after_code:
- file:
path: /etc/nginx/conf.d/outlets/discourse/clacks-overhead.conf
chmod: 444
contents: |
add_header x-clacks-overhead "GNU Terry Pratchett";
النتيجة:
○ → curl -I https://example.contoso.com/
HTTP/2 200
…
x-clacks-overhead: GNU Terry Pratchett
إضافة ملف ثابت في مسار واحد
يضيف هذا المثال ملفًا ثابتًا يتم تقديمه بواسطة nginx في مسار واحد، خارج شجرة Discourse العادية.
hooks:
after_code:
- file:
path: /etc/nginx/conf.d/outlets/server/well-known-important-file.conf
chmod: 444
contents: |
location = /.well-known/important-file {
default_type application/json;
root /var/www/static/;
}
- file:
path: /var/www/static/.well-known/important-file
chmod: 444
contents: |
{"content-free":true}
النتيجة:
○ → curl -i https://example.contoso.com/.well-known/important-file
HTTP/2 200
server: nginx
date: Fri, 07 Mar 2025 23:22:38 GMT
content-type: application/json
content-length: 22
last-modified: Fri, 07 Mar 2025 23:12:08 GMT
strict-transport-security: max-age=63072000
accept-ranges: bytes
{"content-free":true}