هذه السطر ضروري لكي يعمل ذلك. بدونه، تظل جميع الطلبات تحمل عنوان IP الخاص بموازن الحمل. أعرف ذلك لأن منصة Discourse الخاصة بي توقفت عن العمل بسبب أخطاء 429.
في حال لم يكن الأمر واضحًا، هذه هي البنية التحتية لدي:
مستخدم > haproxy > discourse
بالطبع، تتضمن منصة Discourse خادم nginx الوكيل العكسي.
لقد أضفت رؤوس التحويل في haproxy، لكن خادم nginx الداخلي في Discourse لم يكن يحترم عنوان IP المصدر (forwarded for). اضطررت لإضافة سطرين في منشوري الأصلي وإعادة تشغيل الحاوية لكي يعمل الأمر.
لا أعتقد أن هناك متغير بيئة مدمجًا لـ عناوين IP الخاصة بموازنة الحمل المخصصة، لأن nginx لا يقرأ هذه المتغيرات بشكل أصلي في كتلة الخادم.
أيضًا، إذا قمت بتعديل تكوين nginx يدويًا داخل الحاوية قيد التشغيل، فسيتم مسح التعديلات في المرة القادمة التي تقوم فيها بإعادة البناء.
أعتقد أنه لجعل التغيير دائمًا والبقاء بعد إعادة البناء، يجب عليك استخدام أمر الاستبدال في ملف app.yml (أو web_only.yml إذا كانت الحاويتان منفصلتين) - انتقل إلى أسفل ملف .yml تمامًا إلى قسم run:، وأضف هذا الكتلة. هذا يخبر منشئ discourse بحقن إعدادات الـ IP الحقيقية الخاصة بك تلقائيًا بعد فتح كتلة server {:
run:
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: /server.+{/
to: |
server {
set_real_ip_from 192.168.1.100; ## استبدل هذا بعنوان IP الخاص بموازنة الحمل أو الشبكة الفرعية الفعلية
real_ip_header X-Forwarded-For;
real_ip_recursive on;