Я запускаю установку с Nginx, FastCGI, APC, Memcache и Varnish для размещения установки MediaWiki. У меня возникают некоторые проблемы с последними изменениями, которые в случае анонимных пользователей отображаются как исходящие из 127.0.0.1. Я подозревал, что проблема в том, что Varnish не передает IP-адрес пользователя в Nginx должным образом, но у меня это есть в моем vcl_recv:
# Set client IP
if (req.http.x-forwarded-for) {
set req.http.X-Forwarded-For =
req.http.X-Forwarded-For + ", " + client.ip;
} else {
set req.http.X-Forwarded-For = client.ip;
}
Может ли кто-нибудь сказать мне, что еще мне может потребоваться проверить, что может вызвать эту проблему? Потому что я в растерянности ...
Вы должны настроить MediaWiki так что он действительно будет подчиняться X-Forwarded-For
заголовок. Без этих настроек MediaWiki проигнорирует их.
(По историческим причинам все эти параметры конфигурации относятся к Squid ...)
Как минимум, эти строки должны быть в вашем LocalSettings.php
:
$wgUseSquid = true;
$wgSquidServers = array('127.0.0.1'); # IP address of your varnish server
Строки, которые вы описываете из своей конфигурации, установите X-Forwarded-For
заголовок к клиентскому IP. Однако вам все равно нужно указать своему веб-серверу (Nginx), чтобы он проверял и использовал это значение в качестве IP-адреса.
Самый простой способ сделать это, вероятно, с помощью Nginx Реальный IP-модуль. Во-первых, убедитесь, что Nginx был собран с реальным IP-модулем:
Бегать nginx -V
и ищи --with-http_realip_module
Затем измените конфигурацию Nginx (обычно /etc/nginx.conf), добавив в http
раздел:
#Upstream server address (i.e. Varnish address)
set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;
Перезапустите Nginx, и IP-адрес во всех местах (журналы, значения, передаваемые в php и т. Д.) Теперь должен быть получен из заголовка X-Forwarded-For.