问题:我需要在不同域的同一台服务器上托管Node-application和php-application。

example.com应该正常使用端口80,但是node-example.com应该路由到端口3000。

使用mod_proxy将所有流量从端口80路由到3000可以正常工作,因此:

<VirtualHost *:80>
    ServerAdmin info@node-example.com
    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。

最佳答案

只需制作两个<VirtualHost *:80>标签

<VirtualHost *:80>
    ServerAdmin info@node-example.com
    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 info@node-example.com
    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应用程序不是节点,则可以删除该目标的<Proxy *><Location />标签,并将其替换为DocumentRoot /var/www/node-example.com-index.html的静态路径

10-06 15:40
查看更多