Может так случится, что появляется необходимость завести свой tcp сервис на 443 порту. Но что же делать, если там уже висит сайт, который доступен через nginx reverse-proxy. Это можно сделать с помощью конфига в nginx.
Необходимые условия
Для работы этого хака нужно, что бы nginx был скомпилирован с модулем ngx_stream_ssl_preread_module
. Проверить это
можно такой командой:
|
|
Если в выводе что-то есть, значит grep
нашел модель. Если модуля нет, то нужно сделать его “есть”. Это выходит за
рамки заметки.
Пример с ssh сервисом
Почему ssh
? Он есть и нужен почти всегда, а некоторые фаерволы блокируют все запросы мимо 80/443 портов, во
избежание. Особенно это относится к публичным WiFi сетям и тому подобным.
Итак, добавляем stream
, который будет слушать наш 443
порт и распределять подключения. При этому upstream-ы могут
быть как на внутреннем ip
, так и на публичном или каком-то удаленном адресе. Например, для ssh
часто меняют порт, но
с этим методом можно будет вообще убрать общедоступный порт из сети и привязать демон sshd на 127.0.0.1
.
|
|
Теперь подключится к ssh можно будет так:
|
|
При обычном https
запросе (скажем от браузера) - будет открыт сайт, который досутпен на апстреме web
, что не
помешает сайту быть доступным для пользователей и краулеров.