إدارة "سلسلة الثقة" لعنوان IP الحقيقي للمستخدم النهائي

هذا منطقي، يمكننا ببساطة حذفه والوصول إلى نفس النتيجة (باستثناء… انظر أدناه)

حدود التطبيق هي بالفعل nginx نفسه، وليس Discourse أو rails. وبالتالي، فإن القرار بشأن أي الوكلاء البعيدين يجب الوثوق بهم يتم اتخاذه عند نقطة دخول التطبيق، وهو nginx. ثم يمكنه تمرير هذا القرار إلى Discourse.

بشكل افتراضي، يثق Rails فقط بالعناوين المحلية عند معالجة x-f-f، لذلك نفعل ذلك في مكان مختلف يمكننا التحكم فيه بسهولة.

في الواقع، يتبين أن Rails لا ينظر حتى إلى رأس x-real-ip… الرؤوس التي ينظر إليها هي:

  • forwarded
  • client-ip
  • x-forwarded-for

كيف انتهى الأمر بذلك منذ البداية

commit 21b562852885f883be43032e03c709241e8e6d4f (tag: v0.8.0)
Author: Robin Ward
Date:   Tue Feb 5 14:16:51 2013 -0500

    الإصدار الأولي من Discourse

diff --git a/config/nginx.sample.conf b/config/nginx.sample.conf
new file mode 100644
index 00000000..62fabf4a
--- /dev/null
+++ b/config/nginx.sample.conf
…
+    proxy_set_header  X-Real-IP  $remote_addr;

سنضطر إلى القيام ببعض البحث، ولكن الإجابة الآن هي “إنه يعمل”. أعتقد أن هذا هو السبب في أننا وصلنا إلى هذه الحالة في المقام الأول.

يبدو أن هناك جيمًا ربما يستخدمه؟

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