Назад | Перейти на главную страницу

Varnish неправильно передает IP-адрес пользователя в MediaWiki

Я запускаю установку с 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.