Есть 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”
Готово.