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

Дублирующийся IP-адрес в журнале доступа Apache за прокси-сервером nginx

Недавно я унаследовал инфраструктуру, в которой все пользователи проходят через AWS ELB -> прокси nginx -> AWS ELB -> Apache. Проблема, которую я вижу, заключается в том, что IP-адрес клиента отображается дважды в Apache, строка, подобная этой:

"x.x.x.x, x.x.x.x" - - [26/Oct/2016:18:59:10 +0000] "GET /....

Журнал доступа nginx для этого виртуального хоста прекрасен и хорош:

x.x.x.x - - [26/Oct/2016:18:59:10 +0000] "GET /

Проблема в том, что я не совсем уверен, как отлаживать, где это теряется. Я предполагаю, что это либо заголовки, которые отправляет nginx, либо что-то странное в Apache, хотя я подозреваю, что это заголовки X-Forwarded-For, которые передает nginx. Вот соответствующая конфигурация виртуального хоста для затронутого домена:

location / { if ($xxx-example-com-maintenance) { return 503; } if ($http_origin ~* (https?://xxx\.example\.com)) { add_header 'Access-Control-Allow-Origin' "$http_origin"; } proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass $upstream;

Теперь формат журнала Apache выглядит так:

LogFormat "\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" SESSION-%{frontend}C %h" forwarded

Последний был скопирован из предыдущего веб-стека и работал нормально. Вроде застрял здесь, потому что с моей точки зрения все выглядит хорошо. Я нашел nginx real_ip_header и X-Forwarded-For кажется неправильным однако я использую nginx 1.10. Версия Apache - 2.4.23. Будем признательны за любые идеи о том, как устранить эту неполадку. Заранее спасибо.

Оказывается, заголовок X-Forwarded-For должен вести себя подобным образом, и решение заключалось в использовании другого заголовка, который не использовал ELB - в моем случае X-Real-IP. Теперь я могу видеть в журналах только один IP-адрес.