За живота си не можах да накарам mod_remoteip да получава клиентски IP адреси в моите регистрационни файлове за достъп на Apache. Работя върху настройка на Virtualmin с инсталиран Varnish 4 пред Apache 2.4.7. Как го карате да работи?
Получаване на регистрационни файлове за достъп на Apache 2.4 за показване на клиентски IP вместо 127.0.0.1 с Varnish с помощта на mod_remoteip
Отговори (1)
Най-накрая получих клиентските IP адреси в дневника и намерих последната стъпка тук:
Ето стъпките, за да го накарате да работи:
Накарайте Varnish да предаде заглавка на Apache с клиентския IP адрес. Вие правите това, като включите тази част от кода (намира се в този отговор) в самото начало на вашия vcl_recv:
if (req.restarts == 0) { 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; } }
Сега активирайте mod_remoteip в Apache.
Редактирайте вашата Apache конфигурация, за да кажете на mod_remoteip коя заглавка съдържа клиентския IP адрес (от Apache docs). Използвам X-Forwarded-For, но предполагам, че това може да е всичко, стига да съответства на това, което сте конфигурирали да предава Varnish:
RemoteIPHeader X-Forwarded-For
Ако рестартирате Apache и Varnish точно сега, обзалагам се, че Apache вече ще препраща навсякъде към IP адреса на клиента вместо 127.0.0.1. Освен в регистрационните файлове за достъп, където проверявах. За да накараме регистрационните файлове за достъп да показват IP на клиента, трябва да променим формата на регистрационния файл, който Apache използва. В моя случай това беше "комбинираният" формат. Това беше моят пробив и го намерих тук, който препраща към тази отлична информация за нашите цели .
Ето как изглеждаше моят комбиниран формат на журнал:
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
И току-що заместих %a там, където беше %h и ето как изглежда:
LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
И накрая, ето как изглежда блок от моя конфигурационен файл на Apache (mod_remoteip се зарежда преди него):
# Note that the use of %{X-Forwarded-For}i instead of %h is not recommended.
# Use mod_remoteip instead.
RemoteIPHeader X-Forwarded-For
LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
RemoteIPInternalProxy
. Например: RemoteIPInternalProxy 10.0.2.0/24
- person Johnny Tisdale; 09.06.2021