Node.js и Apache на одном компьютере без указания порта

Эти два вебсервера могут с легкостью уживаться на одном сервере.

Несколько фактов об Apache

  • Apache занимает 80-ый (http порт)
  • Apache отвечает на полученные запросы, если не удается подобрать соответствующий virtual host, первым хостом из списка, который считается хостом по умолчанию

Таким образом, если не уточнять порт в адресе запроса, то единственный известный мне вариант подружить два вебсервера — это использовать mod_proxy Apache

Вариант не идеальный, так как убивает всю прелесть асинхронного сервера Node.js синхронным апачем сверху, но пойдет для тестировочной среды.

Итак, вам следует предпринять следующие шаги:

  • убедиться, что в настроках Apache раскомментирован mod_proxy
  • в vhosts.conf добавить новую запись примерно такого вида:

<VirtualHost *:80>

ServerAdmin test@mynodejsserver.ru

ServerName mynodejsserver.ru

ServerAlias www.mynodejsserver.ru
ProxyPass /forum http://forum.citadeli.ru
ProxyPassReverse /forum http://forum.citadeli.ru
ProxyPass / http://localhost:1337/
ProxyPassReverse / http://localhost:1337/

</VirtualHost>

Директивы ProxyPass и ProxyPassReverse превращают виртуальный хост в reverse-прокси, перенаправляющий все запросы на целевой хост и подменяющий необходимые ответа

Не забудьте поменять помимо порта и адреса node.js сервера, порт и адрес виртуального хоста!

Оставить комментарий