Ответ 1
Как делать другие вещи: привязать node к порту 80, обрабатывать трафик, нацеленный на субдомен, и использовать его как обратный прокси для apache для всего остального?
Моя работа запускает несколько разных внутренних веб-приложений на сервере ubuntu (10.10), использующем apache. В настоящее время я разрабатываю другое веб-приложение, и серьезно рассматриваю возможность разработки поверх настраиваемого веб-сервера node.js. Мое рассуждение о желании сделать это:
Мой вопрос: на сервере, где я получил apache, слушая порт 80, как я могу передать определенные поддомены в node.js. Я видел пару статей об использовании виртуальных хостов apache, чтобы удалить их, но это, похоже, лишает цель использования node.js. Если мне нужно пройти через apache, то все три причины моего отказа от apache/IIS аннулируются.
Я знаю, что могу использовать другой порт (: 8080?), но с точки зрения конечного пользователя это довольно запутанно, когда нужно вводить пользовательские порты. Любые альтернативные идеи?
Спасибо
Как делать другие вещи: привязать node к порту 80, обрабатывать трафик, нацеленный на субдомен, и использовать его как обратный прокси для apache для всего остального?
<VirtualHost *:80>
ServerName subdomain.yourdomain.com
ProxyPreserveHost on
ProxyPass / http://localhost:8080/
</VirtualHost>
Благодаря http://www.chrisshiplet.com/2013/how-to-use-node-js-with-apache-on-port-80/
Позвольте мне начать с нуля:
У вас есть DNS. И DNS-сервер отображает один DNS на один IP-адрес.
Затем на вашем компьютере выполняется apache
, который прослушивает подключения на port 80 для http://
и на порту 443 для https://
. http://example/
- это фактически запрос на http://example:80/
.
Вы не можете использовать node.js
для прослушивания на том же компьютере на том же порту, что и apache. Поэтому использование порта 8080 является жизнеспособным.
Вы также можете сопоставить субдомен с другим IP-адресом. Единственное предостережение здесь в том, что вам нужно иметь общедоступный IP-адрес.
Вы не можете обслуживать порт 80 как из Apache, так и из node.js. Наличие Apache в качестве обратного прокси-сервера было бы не очень эффективным, и поэтому nginx популярен в этом сценарии. Другая альтернатива, чем обратный прокси на основе nginx, может быть такой, как Khez предложил сопоставить ваш поддомен с другим IP-адресом, который будет node.js program listen в или, возможно, использовать node.js как обратный прокси для Apache.
if socket.io node работает, обязательно включите также несколько модов Apache:
в файле /etc/apache 2/sites-available/chat.example.com.conf
<VirtualHost *:80>
ServerName chat.example.com
<Location "/">
ProxyPreserveHost On
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
</VirtualHost>
тогда, конечно, service apache2 reload
Вы можете настроить виртуальный хост в apache для своего нового сайта и добавить постоянный перенаправление внутри него к локальному хосту и порту, используемому node.js.
Вот как я это делаю на сервере с несколькими другими виртуальными хостами и моим приложением node.js, запущенным на порту 3000:
NameVirtualHost *: 80
[Другие виртуальные хосты опущены для краткости]
...
Имя_сервера mynewsite.com RedirectMatch (. *) http://localhost:3000 $1