我是一个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阴影以下。 所以ProxyPass到nodejs是永远不会到达的。
你应该把它全部合并为:
<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>
你有没有启用proxy和proxy_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>
希望能帮助别人