Nginx не получает реальный IP-адрес посетителя в блоке сервера
Я использую loadbalancer в моей текущей настройке, запросы приходят от ip 10.71.128.13
,
Я использую Nginx как фронт для Gunicorn. Я хочу получить реальный IP-адрес посетителя и зарегистрировать его (не IP-адрес loadbalancer).
Мой nginx.conf:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# GET REAL IP
set_real_ip_from 10.71.128.12;
set_real_ip_from 10.71.128.13;
set_real_ip_from 10.71.128.14;
real_ip_header X-Forwarded-For;
Мой серверный блок "example.conf"
# HTTPS
server {
etc....
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_buffering on;
}
}
Пример записи в журнале:
10.71.128.13 - - [10/Jun/2014:13:27:58 +0100] "POST /example/ HTTP/1.1" 200 25 "https://example.com/" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36"
К сожалению, эта конфигурация просто возвращает IP-баланс нагрузки, а не IP-адрес посетителя... Кто-нибудь может помочь?
Спасибо
1 ответ
Когда у вас есть сквозная балансировка нагрузки SSL, прокси не может добавить требуемые заголовки, поэтому вы никогда не узнаете исходный IP