Задать вопрос

Логирование адреса посетителя в связке Nginx, Varnish, Apache?

Добрый день.


Имеется связка Nginx -> Varnish -> Apache.


Nginx добавляет ip клиента как X-forwarded for, Varnish к нему приклеивает ip nginx'а

Apache через mod_rpaf выставляет REMOTE_IP на ip nginx-а, а не на клиента.


Если убрать varnish, все работает как нужно — получаем адрес клиента в лог апача.


Как сделать так, чтоб и в текущей связке скрипты в remote-ip получали ip-клиента?

Часть конфига nginx
proxy_pass <a href="http://127.0.0.1">127.0.0.1</a>:8081;<br/>
proxy_set_header Host $host;<br/>
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br/>
proxy_set_header X-Real-IP $remote_addr;


Часть конфига Аpache2
LoadModule rpaf_module modules/mod_rpaf.so<br/>
RPAFenable on<br/>
RPAFsethostname On<br/>
RPAFproxy_ips 127.0.0.1<br/>



Конфиг Vanisha — стандартный (пробовались и не слишком стандартные варианты, не заработало). Если убрать varnish, все работает как нужно.


Как сделать так, чтоб и в исходной связке скрипты в remote-ip получали ip-клиента?


Спасибо.

UPDATE


Самое забавное, что все эти данные видно — varnishlog -c -o SessionOpen $IP, но дальше варниша они не уходят:
13 RxHeader c X-Forwarded-For: 90.157.47.15<br/>
 13 RxHeader c X-Real-IP: 90.157.47.15<br/>
 13 RxHeader c X-Forwarded-For-nginx: 90.157.47.15-nginx<br/>
 13 RxHeader c X-Real-IP-nginx: 90.157.47.15<br/>
  • Вопрос задан
  • 4370 просмотров
Подписаться 8 Оценить 2 комментария
Решения вопроса 1
skurudo
@skurudo Автор вопроса
Пробовал и таким макаром — в апач все равно попадает только адрес сервера, включен RPAF или нет.

Пробовал и без манипуляций, но почему-то только до апача не доходят. Стоит исключить из этой цепочки варниш, как все становится нормально.

Версия -3.0.2
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
xaker1
@xaker1
Что если попробовать добавить
RPAFheader X-Forwarded-For-nginx
в конфиг апача и в конфиге nginx заменить proxy_set_header на
proxy_set_header X-Forwarded-For-nginx $proxy_add_x_forwarded_for-nginx;
Фактически nginx будет ip пихать в другой заголовок, о котором Vanisha не будет знать.
Ответ написан
iSage
@iSage
Конфиг варниша можно посмотреть? В стандартном какраз с X-Forwarded-For всяческие манипуляции совершаются, попробуйте их закомментить.
Ответ написан
iSage
@iSage
Ну так:
remove req.http.X-Forwarded-For;
set req.http.X-Forwarded-For = client.ip;

Удаляется пришедший заголовок и выставляется ип нгникса.

У меня схема немного сложнее, нгникс->варниш->нгникс->пхп-фпм и на второй нгникс приходит как надо: ип-клиента, ип-нгникса.
Конфиг нгникса по этим пунктам аналогичен. В конфиге варниша манипуляций с X-Forwarded-For нет (в этом случае срабатывают дефолтные)

Какая версия варниша?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы