nginx, Двойное проксирование, реальный IP
27 июля, 2010
Порой бывает необходимо сделать цепочку nginx->nginx->apache. При такой структуре маршрутизации теряется реальный IP клиента(пользователя). Предлагаемое решение избавит от этой проблемы. Используйте дополнительную переменную для передачи реального IP.
Основной nginx (первичный):
location / {
proxy_pass http://IP:80; #адрес где стоит второй nginx
proxy_read_timeout 60;
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_set_header realip $remote_addr; # сохраним IP посетителя в переменную
}
Второй nginx:
location / {
proxy_pass http://IP:81; #IP:порт с apache
proxy_read_timeout 60;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $http_realip;
proxy_set_header X-Forwarded-For $http_realip;
proxy_set_header realip «»; # удалим переменную
}
Удачного дня.
[…] на нужные сайты (можно всех). Об этом я писал тут nginx, Двойное проксирование, реальный IP, только указываем наш mycloud вместо IP как получателя с […]
зачем в этой связке второй энжыкс-то? вполне одного хватит, обращающегося к апачу (если нужен mod_rewrite) или просто к php-fpm.
первый nginx балансировщик нагрузки, к примеру.
На самом деле очень нужная вещь.
Автору спасибо большое. Помогло 🙂