#node.js #ubuntu #https #apache2
#node.js #ubuntu #https #apache2
Вопрос:
У меня есть приложение React и два процесса Node Express (REST API), запущенные под http (Apache2) на DigitalOcean Ubuntu 20.04 Droplet. Приложение React работает на порту 80, в то время как приложения Node Express работают на портах 4000 и 4001 соответственно.
Все экземпляры http
были заменены https
в моем коде. Однако порты 4000 и 4001 не являются защищенными портами, как 443. У меня установлен Certbot без ошибок.
Каков рекомендуемый способ «миграции» с http на защищенный https в этом случае? Нужно ли мне настраивать обратный прокси-сервер на веб-сервере Apache2?
Комментарии:
1. Ты делаешь это неправильно. Вы должны настроить диспетчер процессов (например, PM2 ) для обработки приложений узла, а затем использовать HTTP- прокси для предоставления доступа к портам этих приложений и привязки их к доменам и местоположениям с помощью
ProxyPass
иProxyPassReverse
. Проверьте эту замечательную статью, чтобы настроить Node.js Приложение для веб-сайта с Apache на Ubuntu 16.04 .2. @ChristosLytras Я использую PM2, отлично работает. В статье, на которую вы ссылались, нигде не показано, как заставить оба процесса узла работать по протоколу https. Все еще в поисках ответа.
3. Домен, к которому вы будете привязывать процесс PM2, будет иметь SSL-сертификат с использованием модуля SSL Appache (
sudo a2enmod ssl
). В вашем вопросе вы пытаетесь напрямую сопоставить порты приложений для обслуживания. Если вы используете PM2, вам не нужно менятьhttp
экземпляры наhttps
, потому что PM2 свяжет их с помощьюhttp
, а затем модуль Apache SSL передаст процессы PM2 на HTTP-сервер. Существует множество статей о том, как настроить SSL в apache. Создайте домен, поддерживающий SSL<VirtualHost *:443>...</VirtualHost>
, и затем используйтеProxyPass / http://localhost:4000/
.