هذا منطقي، يمكننا ببساطة حذفه والوصول إلى نفس النتيجة (باستثناء… انظر أدناه)
حدود التطبيق هي بالفعل nginx نفسه، وليس Discourse أو rails. وبالتالي، فإن القرار بشأن أي الوكلاء البعيدين يجب الوثوق بهم يتم اتخاذه عند نقطة دخول التطبيق، وهو nginx. ثم يمكنه تمرير هذا القرار إلى Discourse.
بشكل افتراضي، يثق Rails فقط بالعناوين المحلية عند معالجة x-f-f، لذلك نفعل ذلك في مكان مختلف يمكننا التحكم فيه بسهولة.
في الواقع، يتبين أن Rails لا ينظر حتى إلى رأس x-real-ip… الرؤوس التي ينظر إليها هي:
forwardedclient-ipx-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;
سنضطر إلى القيام ببعض البحث، ولكن الإجابة الآن هي “إنه يعمل”. أعتقد أن هذا هو السبب في أننا وصلنا إلى هذه الحالة في المقام الأول.
يبدو أن هناك جيمًا ربما يستخدمه؟