У меня есть сервер 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 есть хорошее руководство о том, как этого добиться: