最近一直有個問題困惑着我,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