Как настроить Apache Reverse Proxy для Node.js
Использование Reverse Proxy с Node.js может значительно улучшить управление и безопасность вашего веб-приложения, особенно в случаях, когда необходимо обрабатывать большой объем трафика или обеспечивать высокую доступность.
Reverse Proxy, такие как Nginx или Apache обеспечивают несколько преимуществ:
- Балансировка нагрузки
- Управление кэшированием
- SSL
- Защита от атак
Альтернативой может служить менеджер процессов PM2, как использовать PM2 для Node.js описано в этой статье.
В качестве примера используется VPS-хостинг с предустановленной Ubuntu 20.04.3 LTS. Имейте в виду, что принципиальной разницы между несколькими последними версиями Ubuntu не должно быть.
Чтобы приступить к настройке Reverse Proxy, на вашей ОС должен быть предварительно установлен Apache 2. Убедимся, что он установлен выполнив команду:
apache2 -v
Server version: Apache/2.4.41 (Ubuntu)
Устанавливаем модули proxy
и proxy_http
:
sudo a2enmod proxy
sudo a2enmod proxy_http
Перезагружаем Apache после установки:
sudo service apache2 restart
Далее нам понадобится отредактировать файл конфигурации /etc/apache2/sites-available/example.com.conf
. Внимание! Путь к этому файлу может отличаться для вашей версии или персональной конфигурации Apache.
Откроем этот файл:
sudo nano /etc/apache2/sites-available/example.com.conf
По умолчанию файл выглядит так:
<VirtualHost *:80>
ServerName example.com
<Directory "/var/www/example.com/html">
AllowOverride All
</Directory>
</VirtualHost>
Изменим файл следующим образом:
<VirtualHost *:80>
ServerName example.com
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
<Location /nodejs>
ProxyPass http://127.0.0.1:8080
ProxyPassReverse http://127.0.0.1:8080
</Location>
<Directory "/var/www/example.com/html">
AllowOverride All
</Directory>
</VirtualHost>
Перезагрузим Apache чтобы изменения вступили в силу:
sudo services apache2 restart
Возьмите простейшее приложение (веб сервер) на Node.js из этой статьи и разместите его по следующему пути:
/var/www/html/nodejs/index.js
Запустите приложение используя команду node /var/www/html/nodejs/index.js
или воспользуйтесь запуском через PM2.
Попробуем открыть наш веб-сайт, в случае успеха вы увидите в браузере следующий текст:
Hello world!
Похожие публикации