經過apache的反向代理實現多用途服務器

遇到問題

最近一直有個問題困惑着我,apache、nodejs、tomcat不能同時在服務器80端口運行,對域名進行設置時使用ip:port又不能獲得指望的結果(結果一直是以一個iframe的形式),所以就在segmentFault上發問:同一臺服務器運行多個http服務如何實現?以後獲得了數位大神的回答,大意就是採用反向代理來實現。所以百度了一些文章,也看了看apache的手冊,大概解決了這個問題。php

apache的思路

apache的思路應該是將服務和參數轉發給真正的服務器,而後從服務器拿到結果返回給瀏覽器,思路和之前的模擬登陸獲取結果有點類似,不過這裏apache都已經作好了,只須要配置好就能夠了。html

apache的域名和代理配置

首先是域名配置,仍是和之前的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」。
clipboard.png
而後在瀏覽器中輸入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

相關文章
相關標籤/搜索