Как перенести приложение React с несколькими узловыми процессами с http на защищенный https с помощью Ubuntu Apache2

#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/ .