2017-01-27 3 views
2

У меня есть сервер Nginx, прослушивающий 80, который запускается внутри контейнера Docker.Nginx: сохранить порт во время перенаправления

Внутри конфигурации Nginx мне нужно выполнить перенаправление на статическую страницу в определенных ситуациях.

rewrite^/foobar.html redirect; 

Пользователь может запустить контейнер, указав любой порт с помощью команды Докер линии (для справки, она может выставить контейнер на порт 8000 и внутренне Nginx будет по-прежнему использовать 80).

Теперь, когда Nginx перенаправляет URL-адрес, порт заменяется на внутренним от Nginx вместо того, чтобы использовать тот, который используется Docker.

Я попытался установить кучу заголовков, но они не помогли:

proxy_set_header X-Forwarded-Host $host:$server_port; 
proxy_set_header X-Forwarded-Server $host; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
proxy_pass http://app_server; 

rewrite^/foobar.html redirect; 

Он по-прежнему перенаправляет на 80.

Как я могу указать Nginx на сохранение порта, используемого пользователем?

ответ

4

Итак, я нашел решение, я могу указать редирект следующим образом:

rewrite^$scheme://$http_host/foobar.html redirect; 

Это сохранит порт.

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