Подтвердить что ты не робот

Nodejs без номера порта

Я развернул приложение nodejs на VPS (ubuntu 10.04). Я разместил его на субдомене (subdomain.myapp.com:3000), и у меня есть только один IP-адрес.

По умолчанию порт 80 используется apache по умолчанию. Я просто хочу, чтобы мое приложение работало на порту 3000, но URL должен быть (subdomain.myapp.com)

Возможно ли это в nodejs или мне нужно настроить файлы виртуального хоста или apache.

4b9b3361

Ответ 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 могли следовать