أواجه الكثير من الروبوتات/الزواحف السيئة التي تزور موقع Discourse الخاص بي باستخدام وكيل مستخدم فارغ. عادةً ما أقوم بتحرير تكوين nginx للقيام بذلك، ولكن هذا غير متاح عند استخدام طريقة تثبيت Docker. لا أرغب حقًا في إضافة خادم وكيل إضافي لهذا الغرض إذا كان بإمكاني تجنب ذلك.
يمكنك الاطلاع على discourse_docker/templates/web.ratelimited.template.yml at main · discourse/discourse_docker · GitHub كمثال لكيفية تعديل إعدادات nginx داخل الحاوية.
لكل من يرغب في القيام بذلك على وجه التحديد، قمت بإنشاء /var/discourse/templates/web.blockemptyua.yml بالمحتويات التالية:
run:
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: /listen 443 ssl http2;/
to: |
listen 443 ssl http2;
if ($http_user_agent = "") { return 403; }
ثم في /var/discourse/containers/app.yml أضفت ملف القالب الجديد هذا إلى نهاية قائمة القوالب في أعلى الملف، متبوعًا بـ ./launcher rebuild app
Nginx الآن يرفض جميع الطلبات بمعرف مستخدم فارغ.
تعديل: تم تغيير المطابقة/الاستبدال ليكون في مكان أفضل.
لا أعرف دوكر، لذا فقط لكي أكون في الجانب الآمن، لأنني سأكون متوترًا في كل مرة أرى فيها replace في أي مكان…
هذا لا يستبدل محتوى discourse.conf بالكامل ولكنه يضيف إليه، أليس كذلك؟
إنه يستبدل سطرًا داخل الملف. لذلك يجد المثيل الأول لـ:
listen 443 ssl http2;
ويستبدله بـ
listen 443 ssl http2;
if ($http_user_agent = "") { return 403; }
لذلك نحن فقط نضيف سطرًا جديدًا إلى الملف في المكان الصحيح. لا يتم المساس ببقية الملف. إنه يستخدم نفس آلية القوالب الرسمية لتصحيح الملف بأمان.
كما قلت سابقًا، أنا لا أعرف دوكر. أنا مجرد مستخدم عادي فقير حاصل على درجة الدكتوراه في النسخ واللصق.
لهذا السبب ملاحظة واحدة للباحثين المستقبليين:
web.blockemptyua.yml لا يمكن أن يكون أول قالب معلن عنه. وبشكل أكثر تحديدًا، يجب أن يأتي بعد web.template.yml (أو ربما بعد كل قوالب web.*).
أعتقد أن الترتيب له معنى هنا، وإذا كنا نحاول العمل معه كأول قالب، فإن إعادة البناء/التمهيد تتوقف بخطأ لأنه لا يوجد /etc/nginx/conf.d/discourse.conf في تلك اللحظة.
حسنًا، كل يوم شيء جديد ![]()
بالتأكيد، يجب أن يذهب في النهاية. لقد قمت بتعديل مشاركتي لتضمين ذلك ![]()
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.