最近一直有个问题困惑着我,apache、nodejs、tomcat不能同时在服务器80端口运行,对域名进行设置时使用ip:port又不能获得指望的结果(结果一直是以一个iframe的形式),所以就在segmentFault上发问:同一台服务器运行多个http服务如何实现?以后获得了数位大神的回答,大意就是采用反向代理来实现。所以百度了一些文章,也看了看apache的手册,大概解决了这个问题。php
apache的思路应该是将服务和参数转发给真正的服务器,而后从服务器拿到结果返回给浏览器,思路和之前的模拟登陆获取结果有点类似,不过这里apache都已经作好了,只须要配置好就能够了。html
首先是域名配置,仍是和之前的vhosts配置同样node
<VirtualHost *:80> ServerName www.eg.com </VirtualHost>
我以为要是作整个域名的转发这样就好了,接下来添加配置linux
<VirtualHost *:80> ServerName www.eg.com <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/ </VirtualHost>
这样就将www.eg.com的请求转发到了8080端口。
我用nodejs启动了一个express应用,固然,只不过是输出了一句“hello world”。
而后在浏览器中输入www.eg.com,就会顺利的出现“hello world”了。express
须要开启apache代理的拓展apache
LoadModule proxy modules/proxy.so LoadModule proxy_connect modules/proxy_connect.so LoadModule proxy_http modules/proxy_http.so LoadModule proxy_html modules/proxy_html.so
须要设置hosts
windows下位置在c:/windows/system32/drivers/etc/hosts,linux下在/etc/hosts下。segmentfault
通过个人测试,apache对apache自身的其余端口的代理和对nodejs的代理是正常工做的。windows