Справедливое замечание, мы могли бы просто удалить его и получить тот же результат (кроме… см. ниже)
Граница приложения на самом деле находится в самом 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
Initial release of 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;
Придётся покопаться, но пока что ответ «оно работает». Думаю, именно так мы и оказались в такой ситуации.
Похоже, может быть, какой-то гем его использует?