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

Можно ли перенаправить порт только для одного приложения?

У меня есть сервер Ubuntu (18.04), на котором размещены некоторые веб-сайты на Apache2, а также запущено приложение узла. Я хочу, чтобы приложение узла использовало SSL, но, поскольку оно не работает с правами root, у него нет разрешения на прослушивание портов ниже 1024.

Итак, я установил правило iptables, как показано ниже, и слушал порт 8443:

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443

Это работает для узла, но теперь все веб-сайты ломаются из-за несоответствия сертификата (Error code: SSL_ERROR_BAD_CERT_DOMAIN в Firefox). Я предполагаю, что это связано с тем, что веб-запросы HTTPS также перенаправляются на тот же порт.

Есть ли способ обнаруживать и пересылать только запросы узлов, оставив Apache в покое? Или какое-то другое решение.

Чтобы сформировать этот ответ, я предполагаю, что когда вы говорите, что у вас есть другие сайты Apache, размещенные на этом сервере, они также будут использовать HTTPS. Из-за этого порт маршрутизации 443 к службе узла будет нарушать ваши SSL-сайты в apache2 в каждом отдельном случае ... если вы не прокси.

Лучше запустить новый Apache VHost и использовать ProxyPass и убедиться, что вы указываете прокси-проход на localhost, но с важным номером порта в конце, например https: // localhost: 8443.

Как обычно, у DigitalOcean есть хорошее руководство о том, как этого добиться:

https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension