Я пытаюсь понять, как настроить обратный прокси в nginx, когда конечная точка находится в корневом контексте:
http://frontend.com/mylink
прокси пересылает на http://10.0.0.2:8000/
К сожалению, я не могу изменить контекст приложения на http://10.0.0.2:8000
, поэтому я пытаюсь найти обходной путь в nginx для этой проблемы. Следующая конфигурация обычно работает нормально при наличии контекста, но не работает в ситуации выше:
location /mylink {
proxy_pass http://10.0.0.2:8000;
proxy_redirect http://10.0.0.2:8000 /mylink;
port_in_redirect off;
}
Есть идеи, что мне здесь не хватает?
Поскольку ваше местоположение и proxy_pass не имеют косой черты, нормализованный URI не будет видеть /mylink
часть вырезана правильно, и поведение по умолчанию proxy_redirect не добавляет ее. Просто используйте это:
location /mylink/ {
proxy_pass http://10.0.0.2:8000/;
}
Думаю, если поменять на:
location /mylink {
proxy_pass http://10.0.0.2:8000/;
proxy_redirect http://10.0.0.2:8000 /mylink;
port_in_redirect off;
}
Обратите внимание на /
на proxy_pass
линия, это приводит к тому, что совпадающая часть вашего location
не отправляться на сервер.
Для справки см. http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass:
Если директива proxy_pass указана с URI, то, когда запрос передается на сервер, часть нормализованного URI запроса, соответствующая местоположению, заменяется URI, указанным в директиве: