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

Apache + Node.js + mod_proxy. Как перенаправить один домен на: 3000, а другой на: 80

Проблема: мне нужно разместить Node -приложение и php-приложение на том же сервере в разных доменах.

example.com должен использовать порт 80 как обычно, но Node -example.com должен перейти на порт 3000.

Маршрутизация ВСЕ трафика с порта от 80 до 3000 работает отлично, используя mod_proxy, таким образом:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName  node-example.com
    ServerAlias www.node-example.com

    ProxyRequests off

    <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>

    <Location />
            ProxyPass http://localhost:3000/
            ProxyPassReverse http://localhost:3000/
    </Location>

</VirtualHost>

Однако это приводит к тому, что example.com и Node -example.com указывают на localhost: 3000 и запускают Node -app.

Есть ли способ сохранить example.com для указания на порт 80?

Также было бы хорошо, если example.com/old-admin указал на порт 80.

4b9b3361

Ответ 1

Просто создайте два тега <VirtualHost *:80>

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName www.node-example.com

    ProxyRequests off

    <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>

    <Location />
            ProxyPass http://localhost:3000/
            ProxyPassReverse http://localhost:3000/
    </Location>

</VirtualHost>
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName  node-example.com    

    ProxyRequests off

    <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>

    <Location />
            ProxyPass http://localhost:80/
            ProxyPassReverse http://localhost:80/
    </Location>

</VirtualHost>

Он должен работать таким образом;)

Или если ваше приложение localhost:80 не является node, вы можете удалить теги <Proxy *> и <Location /> для этой цели и заменить его на DocumentRoot /var/www/node-example.com - ваш статический путь к index.html