Есть NGINX, который работает за AWS Application Load Balancer-ом (ALB).
Проблема заключается в том, что в логах NGINX пишется IP самого ALB, а не клиента:
10.0.2.26 — — [06/Jul/2018:10:30:50 +0300] «GET /debug/ HTTP/1.1» 404 133 «-» «Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36»
Что бы исправить это — добавляем в конфиг nginx.conf, блок http {} (или в server {} конфига вируталхоста):
...
real_ip_header X-Forwarded-For;
set_real_ip_from 10.0.2.0/24;
...
Тут:
real_ip_header— указываем заголовок, из которого будем получать информацию о реальном клиентеX-Forwarded-For— заловок, в котором ALB сохраняет информацию об IP клиента, с которого пришёл запросset_real_ip_from— задаём сеть, заголовкам из которой мы доверяем- 10.0.2.0/24 — сеть Application Load Balancer-а
Перечитываем конфиги:
[simterm]
root@bm-backed-app-dev:/etc/nginx/conf.d# nginx -t && service nginx reload nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
[/simterm]
Проверяем curl-ом:
[simterm]
$ curl -sI https://dev.example.com/ HTTP/2 200
[/simterm]
Проверяем лог:
194.***.***.26 — — [06/Jul/2018:10:55:50 +0300] «HEAD / HTTP/1.1» 200 0 «-» «curl/7.60.0»
Готово.




