在同一端口上运行Apache http,Apache tomcat和nodejs

我是一个Web开发人员和一个项目,我需要在不使用端口的情况下运行tomcat和nodejs。

我在httpd中看到了一些关于代理模块的文章,所以我创build了两个虚拟主机:

<VirtualHost *:80> ServerName localhost # ErrorLog "logs/tomcat-error.log" ProxyPreserveHost On ProxyPass /tomcat http://localhost:8080/ ProxyPassReverse /tomcat http://localhost:8080/ </VirtualHost> <VirtualHost *:80> ServerName localhost # ErrorLog "logs/nodejs-error.log" ProxyPreserveHost On ProxyPass /nodejs http://localhost:8000/ ProxyPassReverse /nodejs http://localhost:8000/ </VirtualHost> 

当我尝试访问localhost / nodejs或localhost / tomcat我得到一个未find错误。

有人能解释我为什么吗?

谢谢 ;-)

第一个匹配的VirtualHost阴影以下。 所以ProxyPassnodejs是永远不会到达的。

你应该把它全部合并为:

 <VirtualHost *:80> ServerName localhost # ErrorLog "logs/tomcat-error.log" <Location /tomcat/ > ProxyPreserveHost On ProxyPass http://localhost:8080/ ProxyPassReverse http://localhost:8080/ </Location> # ErrorLog "logs/nodejs-error.log" <Location /nodejs/ > ProxyPreserveHost On ProxyPass http://localhost:8000/ ProxyPassReverse http://localhost:8000/ </Location> </VirtualHost> 

你有没有启用proxyproxy_http模块?

当然,tomcat和nodejs应该在原地。

我通过在sites-enabled conf中执行此操作来解决我的问题:

 NameVirtualHost MY-IP:80 <VirtualHost MY-IP:80> ProxyPass / http://localhost:3000/ ProxyPassReverse / http://localhost:3000/ ServerName dummy.com </VirtualHost> <VirtualHost MY-IP:80> DocumentRoot /var/www ServerName dummy.org </VirtualHost> 

希望能帮助别人