Назад | Перейти на главную страницу

Порт запроса Nginx

У меня есть сервер nginx с включенным SSL. Поскольку он работает на другом порту (чем 443), иногда он получает простые HTTP-запросы вместо HTTPS. Я бы хотел настроить перенаправление для автоматической замены схемы, я пробовал этот код:

error_page 497 https://$host:$server_port$request_uri;

Но проблема здесь в том, что, поскольку сервер работает в виртуальной машине, и порт перенаправляется на другой порт, он перенаправляется на недопустимый порт (с которого сервер получил запрос).

Мой вопрос: как я могу проанализировать / получить порт из запроса, а не порт с сервера, получившего запрос?

Надеюсь, не слишком поздно (восемь месяцев!). У меня сам был аналогичный вопрос, чтобы использовать исходный порт запроса в nginx.conf.

nginx $ http_название переменная

$ http_name: произвольное поле заголовка запроса; последняя часть имени переменной - это имя поля, преобразованное в нижний регистр с заменой дефисов на символы подчеркивания

$http_host поэтому должен содержать заголовок запроса Host, если это помогает.

например локальный: 8020

Этот вопрос в значительной степени дублирует этот:

Как перенаправить запросы, отличные от HTTP, с порта 80 на другой порт?

Там они получают запросы, отличные от HTTP, на порт 80, вы получаете запросы без HTTPS на альтернативном порту 443. В остальном идея та же.

Модули Nginx существуют, чтобы делать больше с TCP-пакетами:

http://nginx.org/en/docs/stream/ngx_stream_core_module.html

https://github.com/yaoweibin/nginx_tcp_proxy_module