مرحباً، يعمل نظام Discourse الخاص بي من خلال وكيل عكسي (NPM).
لا يدعم Discourse حقل x-forwarded، وبالتالي يظهر لي دائماً عنوان IP الخاص بوكيلي العكسي عند النظر، على سبيل المثال، من أي عنوان IP يسجل المستخدم نفسه وما إلى ذلك…
لقد قمت بمراقبة الطلبات على Discourse، وحقل X-forwarded موجود، لكن في access.log، يظهر عنوان IP الخاص بالوكيل العكسي.
أرى على الإنترنت أنه من الضروري تغيير قالب التكوين أو ملف تكوين nginx الخاص بـ Discourse (وليس nginx الموجود في NPM).
هل يمكنك مساعدتي في ذلك؟ لأن Discourse يقوم بتفعيل قالب web.ratelimit ويرسل غالباً أخطاء 429.
لدي خادم Debian مع Apache 2.4 vHosts وأحد هذه vHosts هو حاوية Discourse Docker. على Apache، تم تمكين mod_remoteip (لم يكن هناك mod_extract_forwarded)، ولكن بدون أي خيارات تكوين. تكوين vHost بسيط جدًا:
RequestHeader set X-Forwarded-Proto "https"
ProxyPreserveHost On
ProxyRequests Off
ProxyPass /.well-known !
ProxyPass / http://localhost:8083/
ProxyPassReverse / http://localhost:8083/
8083 هو المنفذ HTTP المكشوف لحاوية Discourse Docker.
هذا كل شيء تقريبًا.
أرى زوارًا مختلفين (حسب IP) في الإحصائيات التي تم إنشاؤها باستخدام سجل وصول Apache، والأهم من ذلك، أرى أيضًا عناوين IP مختلفة للمستخدمين (كان هذا فحصًا بسيطًا بالنسبة لي). لذلك يبدو أن عناوين IP للزوار مكشوفة من خلال وكيل Apache إلى Discourse. كان هذا بالفعل هو الحال بدون تمكين mod_remoteip، والذي قمت به فقط قبل أيام قليلة.
على أي حال، أواجه مشكلة مرة أخرى الآن. هناك زاحف أو هجوم DoS يعمل على خادمنا بعنوان IPv4 من كراكوف، بولندا. إنه يولد الكثير من أخطاء 429. هذا لا بأس بالنسبة لي، ولكن جميع الزوار الآخرين يحصلون أيضًا على هذه الأخطاء.
هل هذا هو الحال أيضًا؟ لذلك عندما يتم الوصول إلى حد الاتصال يحصل الجميع على خطأ؟ أو لكل IP؟
هل هناك شيء مفقود في تكويني أو يمكنني تحسينه/ضبطه؟ كانت لدينا مشاكل مع Claudebot قبل بضعة أسابيع وأيضًا قبل بضعة أيام، لذلك ربما يحتاج الحد إلى الرفع قليلاً.
لقد قمت للتو بتعديل app.yml وقمت بإعادة بناء الحاوية. عاد الروبوت على الفور تقريباً بعد عودة الحاوية. لا أرى أي أخطاء 429 حتى الآن. آمل أن يبقى الأمر كذلك للمستخدمين “العاديين”.
هذا هو الأمر… عندما أتحقق من صفحة المشرف للمستخدمين، كنت أرى دائماً إدخالات مختلفة لـ “آخر IP”. لذلك بطريقة ما رأت Discourse عناوين IP الحقيقية للمستخدمين، حتى بدون mod_remoteip وأيضاً بدون تغيير تكوين Nginx.
على أي حال، أنا متحمس لرؤية ما إذا كان تغيير تكوين Nginx قد جلب الحل لهذه المشكلة!