Nodejs без номера порта
Я развернул приложение nodejs на VPS (ubuntu 10.04). Я разместил его на субдомене (subdomain.myapp.com:3000), и у меня есть только один IP-адрес.
По умолчанию порт 80 используется apache по умолчанию. Я просто хочу, чтобы мое приложение работало на порту 3000, но URL должен быть (subdomain.myapp.com)
Возможно ли это в nodejs или мне нужно настроить файлы виртуального хоста или apache.
Ответы
Ответ 1
Да возможно
В вашем файле виртуального хоста apache настройте следующие
<VirtualHost *:80>
ServerName subdomain.myapp.com
ProxyRequests off
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
ProxyPreserveHost on
</VirtualHost>
Вы должны иметь
NameVirtualHost *:80
поверх вашего файла, а также модуль Proxy, установленный для apache (я думаю, что это стандартная конфигурация для ubuntu)
LoadModule proxy_module lib/httpd/modules/mod_proxy.so
он должен быть в файле httpd.conf
тогда вы должны перезапустить apache, и это должно быть хорошо!
Ответ 2
Просто обновление ответа @drinchev с Apache 2.4. *
Включить режим прокси:
a2ensite proxy_http
a2ensite proxy
Тогда:
<VirtualHost *:80>
ServerName subdomain.myapp.com
ProxyRequests off
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
ProxyPreserveHost on
</VirtualHost>
Ответ 3
Мне нужно было сделать то же самое, и ответ @drinchev почти сработал у меня, но поскольку я запускал несколько vhosts в своем dev-блоке, это не совсем так. Пара незначительных трюков не позволяла ему сбивать всех моих других призраков.
<Proxy *>
Нужно быть
<Proxy mynodejs.mydevbox.local>
И
<VirtualHost *:80>
Нужно быть
<VirtualHost mynodejs.mydevbox.local:80>
Итак, где мой локальный dev-компьютер называется "mydevbox.local", а мой node vhost прослушивает порт 3000, моя окончательная конфигурация больше напоминала:
<VirtualHost mynodejs.mydevbox.local:80>
DocumentRoot "/Library/WebServer/Documents/mynodejs"
ServerName mynodejs.mydevbox.local
ServerAlias mynodejs.mydevbox.local
ProxyRequests off
<Proxy mynodejs.mydevbox.local>
Order allow,deny
Allow from all
</Proxy>
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
ProxyPreserveHost on
ErrorLog "/private/var/log/apache2/mynodejs_error_log"
CustomLog "/private/var/log/apache2/mynodejs_access_log" common
</VirtualHost>
<VirtualHost myothervhost.mydevbox.local:80>
DocumentRoot "/Library/WebServer/Documents/myothervhost"
ServerName myothervhost.mydevbox.local
ServerAlias myothervhost.mydevbox.local
ErrorLog "/private/var/log/apache2/myothervhost_error_log"
CustomLog "/private/var/log/apache2/myothervhost_access_log" common
</VirtualHost>
Другие vhosts могли следовать