Недавно я унаследовал инфраструктуру, в которой все пользователи проходят через AWS ELB -> прокси nginx -> AWS ELB -> Apache. Проблема, которую я вижу, заключается в том, что IP-адрес клиента отображается дважды в Apache, строка, подобная этой:
«xxxx, xxxx» - - [26 / Oct / 2016: 18: 59: 10 +0000] «GET / ....
if ($ xxx-example-com-maintenance) {
возврат 503;
}
if ($ http_origin ~ * (https?: // xxx \ .example \ .com)) {
add_header 'Access-Control-Allow-Origin' "$ http_origin";
}
proxy_set_header Хост $ 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 "перенаправлен
Последний был скопирован из предыдущего веб-стека и работал нормально. Вроде застрял здесь, потому что с моей точки зрения все выглядит хорошо. Я обнаружил nginx real_ip_header, а X-Forwarded-For кажется неправильным , однако я использую nginx 1.10. Версия Apache - 2.4.23. Будем признательны за любые идеи о том, как устранить эту неполадку. Заранее спасибо.
Оказывается, заголовок X-Forwarded-For должен вести себя подобным образом, и решение заключалось в использовании другого заголовка, который не использовал ELB - в моем случае X-Real- IP. Теперь я могу видеть в журналах только один IP.