2016-02-16 1 views
0

В настоящее время я использую nginx 1.9.11. У меня есть ситуация, когда мое приложение подается из динамического порта через балансировщик нагрузки, но установлен порт в самом приложении. Похоже, что этотnginx: Как мне сделать переписывание (перенаправление)? (т. е. не возиться с номером порта!)

Port [4000-4999] on load balancer -> instances of nginx all on port 80 

мне нужно перенаправить /myapp к /myapp/ без потери информации порта. Но я не знаю порт на уровне приложения, потому что приложения динамически создаются и уничтожаются!

Вот синтаксис моего правила перезаписи:

rewrite ^/myapp /myapp/ 

Что я получаю:

http://example.com:4000/myapp -> http://example.com/myapp # no port 4000! 

Я не могу жёстко порт ... потому что есть тысяча возможностей, и они меняют все время! Мне нужно остаться в том же порту, но я не знаю, в какой порт мы вошли. Как я могу заставить nginx покинуть порт?


То, что я уже пробовал ...

В http, server и location разделы:

port_in_redirect off; 

В разделе server:

proxy_set_header Host $host:$server_port; 

Также в т он server раздел:

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
proxy_set_header Host $http_host; 
proxy_set_header X-Real-IP $remote_addr; 
proxy_redirect off; 

ответ

0

Classic. После двух дней усилий я напишу хороший столбец «Переполнение стека», и сразу после этого что-то происходит со мной, я пытаюсь это сделать, и это работает.

Вот как я решил эту проблему: я изменил правила перезаписи выглядеть следующим образом:

rewrite ^/myapp $http_host/myapp/ 

И это сработало!

Смежные вопросы