Node.js | Как подружить Apache с Express приложением?



Иногда возникают ситуации, когда нам необходим именно Apache в качестве веб-сервера.

Например, у заказчика есть уже настроенный блог на WordPress весит на домене blog.site.ru. Нам необходимо повесить на app.site.ru Express приложение, которое, допустим, слушает 3000 порт. Как быть?



Cоздаём новый файл в директории виртуальных хостов Apache. У меня это /etc/apache2/sites-available/. Назовём его, допустим, app.site.ru.conf, чтобы было понятно к какому поддомену относится этот файл.

Далее в файл нужно добавить следующее содержимое:

<VirtualHost *:80>

ServerName app.site.ru

ServerAlias app.site.ru

<Proxy *>

Order deny,allow

Allow from all

</Proxy>

ProxyPass / http://localhost:3000/

ProxyPassReverse / http://localhost:3000/

</VirtualHost>


Остаётся только включить сайт:

sudo a2ensite app.site.ru



Всё очень просто.



В дополнение стоит сказать, что таким образом можно добавить несколько приложений на разных портах.