مع Rate Limiting و Reverse Proxy

كان لدي سؤال حول رأس (header) الذي يتم استخدامه لتحديد المعدل. للسياق، لدينا ملف nginx.conf مع set_real_ip ونحن نستخدم مزودًا يرسل لنا حركة مرور بعنوان IP الفعلي للعميل في رأس Some-Client-IP.

  sendfile on;
set_real_ip_from ...;
set_real_ip_from ...;
set_real_ip_from ...;
set_real_ip_from ...;

real_ip_header Some-Client-IP;
real_ip_recursive on;

Some-Client-IP هو ما نحصل عليه من المصدر (upstream) مع عنوان IP الفعلي للمستخدم.

في ملف discourse.conf الحالي في conf.d لـ nginx، لدينا الإعداد الافتراضي:

لجميع المسارات بشكل عام أعتقد

    proxy_set_header Host $http_host;
    proxy_set_header X-Request-Start "t=${msec}";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $thescheme;
    proxy_pass http://discourse;

هل يبحث Discourse عن X-Forwarded-For أو X-Real-IP لتحديد المعدل؟ أعتقد أنه يبحث عن X-Forwarded-For لأنه في ملف production.log أرى عنوان IP الخاص بالخادم الوكيل العكسي الخاص بي. هل الحل الصحيح هو تغيير X-Forwarded-For ليبحث أيضًا عن $remote_addr؟

من هذا الموضوع، يبدو أن شخصًا ما قام بحذف هذا السطر تمامًا Last IP shows Reverse Proxy IP address - #5 by schleifer

شكرًا

إعجاب واحد (1)

هل أضفت هذه المقطوعة إلى ملف app.yml الخاص بك؟ يجب أن تكون هذه الإعدادات في NGINX الموجود داخل الحاوية. انظر أيضًا Set up Discourse on a server with existing Apache sites. هذا خاص بـ Apache، ولكن الجزء الذي يذهب إلى app.yml هو نفسه بغض النظر عما يقوم بالوكيل العكسي.

تلك المقاطع موجودة في ملف nginx.conf الحالي بدلاً من حاويتنا تحت conf.d/discourse.conf.

بالنسبة لجزء app.yml، هل تقصد

run:
  - replace:
      filename: /etc/nginx/conf.d/discourse.conf
      from: "types {"
      to: |
        set_real_ip_from 172.17.0.0/24;
        real_ip_header X-Forwarded-For;
        real_ip_recursive on;
        types {

ليس لدينا HAProxy خارج الحاويات، لدينا مزود DNS يقوم ببعض المعالجة المسبقة لنا، لذا فإن real_ip_header موجود في قيمة رأس أخرى، ولدينا بالفعل قائمة بعناوين IP التي تحتاج إلى استبدال.

لدينا أيضًا قائمة بـ X-Forwarded-For، أتساءل عما إذا كان هذا هو السبب في ظهور عناوين IP الخاطئة.

على سبيل المثال، أعتقد أننا نرى 111.11.11.111 في سجلات الإنتاج، ولكن ليس 55.555.55.55 وهو ما نريده (حيث تم تعيينه في x-real-ip)

HTTP_X_FORWARDED_FOR	111.11.11.111, 22.22.22.222, 333.33.33.333, 55.555.55.55
HTTP_X_REAL_IP	55.555.55.55

إذًا، ستحتاج إلى تعديل التكوين الموصى به وفقًا لذلك.

أو، إذا كنت لا تهتم بعناوين IP أو تحديد المعدل، يمكنك تذكير قالب تحديد المعدل.

إعجاب واحد (1)