Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
логика работы Host при проксировании
Добрый день.
Не могу понять логику работы с Host. Есть приложение, которое надо
проксировать на нестандартном порту (пример конфига)
server
{
listen *:8080;
server_name aaa.spb.ru;
include conf.all/tunes-main.conf;
location / {
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://192.168.2.32:8080;
}
}
При обращении там идут редиректы, при этом Location возвращается без
указания порта (8080) и поэтому ничего не работает.
При этом установка
proxy_set_header Host aaa.spb.ru:8080;
после блока proxy_set_header также ничего не дает - этот блок вынесен в
отдельный файл для всех сайтов.
Но стоит убрать строку proxy_set_header Host $host; - и порт нормально
появляется в редиректе. В чём логика? Host нельзя переопределить 2
строкой? или при этом уходит запрос с 2 хостами и система сама выбирает
что больше нравится? или как? И как тогда правильнее задать в выносном
блоке, можно ли как Host $host$port? Или просто не добавлять, а для
секции с изменением порта - задавать Host уже в нужном location?
И попутно мелкий вопросик: была ситуация наоборот, проксируем запрос
внутрь с 80 порта на 8080, пока явно не прописали Host $host:80; -
периодически порт 8080 проявлялся в адресной строке. Хотя на десятке
других серверов такого не было, при том что секция одинаковая.
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|