Я использую nginx в стандартном сценарии обратного прокси-сервера, чтобы передать все запросы на /auth
другому хосту, однако я пытаюсь использовать нестандартные порты.
Моя конечная цель - чтобы заголовок X-Forwarded-Port
был установлен на порт, на который поступил запрос.
Вот мой блок местоположения в nginx .conf:
location /auth/ {
proxy_pass http://otherhost:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port <VAR>;
}
Этот nginx работает в контейнере docker, который настроен на пересылку запросов из 8085 в 80 в контейнере, так что процесс nginx прослушивает 80:
0.0 .0.0: 8085-> 80 / tcp
Когда я нажимаю на URL:
http://localhost: 8085 / auth /
Я правильно перенаправлен на http://otherhost:8090
, но заголовок X-Forwarded-Port
отсутствует или неверен.
Где у меня <VAR>
в исходном блоке, я попробовал следующее:
$server_port
- это порт nginx, который прослушивает (80), а не порт запроса.
$pass_port
- Кажется, в моей настройке ноль, так что nginx dro ps заголовок.
$http_port
- это случайный порт для запроса.
$remote_port
- это случайный порт для request.
Я могу изменить мой конфиг во время развертывания на жесткий код для известного порта входящих запросов, но в идеале я мог бы изменить фронтальный порт без любые изменения в конфигурации nginx.
Я искал список nginx переменных , но не могу найти ничего подобного $request_port
. Могу ли я достичь своих целей?