Apache Http Server 解決不同域名共用服務器80端口問題

今天部署網站時,用戶突然說他們只有一臺服務器,一個公網IP,而且現在服務器上已經有一個發佈中的網站(顯然80端口已被佔用),讓我們想想辦法怎麼樣才能部署我們的項目到他們服務器上,而且使用同一臺服務器,同一個公網IP,第一次遇到這種需求,開始覺得肯定實現不了,但後來百度下,竟然真有方法解決這種問題,強大的代理,發現代理可以實現nginx,Apache Http Server,或者直接在IIS上進行修改配置(不通用,不考慮),大體看了下,感覺Apache Http Server使用起來非常簡單,就決定使用它啦,首先在本地進行了一次模擬環境測試,過程中也遇到了一些問題,現在把配置過程記錄下來,供遇到同樣問題的朋友參考。

一、前期準備:

1、安裝Apache Http Server:

我下載的是 httpd-2.2.25-win32-x86-no_ssl.msi(很簡單,百度搜下Apache Http Server)

2、倆個模擬服務器,我這邊使用的是IIS一個、和tomcat一個(Windows下IIS是現成的,而且可以模擬不同服務器,雖然沒啥意思,嘿嘿)

3、修改HOST文件 (C:\Windows\System32\drivers\etc\HOSTS)

增加倆項(模擬不同域名)
127.0.0.1 www.aaa.com
127.0.0.1 www.bbb.com

二、修改配置文件

現在準備工作就算完成啦,現在開始進行修改Apache Http Server配置文件(httpd.conf、httpd-vhosts.conf)

1、httpd.conf 位置:C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\httpd.conf

將下面五處的註釋去掉

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
Include conf/extra/httpd-vhosts.conf

2、httpd-vhosts.conf 位置:C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\extra\httpd-vhosts.conf

增加以下配置

>     <VirtualHost *:80>
>     ProxyPreserveHost On
>     ServerAdmin [email protected]
>     ServerName  www.bbb.com
>     ProxyPass / http://www.bbb.com:8084/
>     ProxyPassReverse / http://www.bbb.com:8084/
>     SetEnv force-proxy-request-1.0.1
>     SetEnv proxy-nokeepalive 1 
>     </VirtualHost>
> 
>    <VirtualHost *:80>
>     ProxyPreserveHost On
>     ServerAdmin [email protected]
>     ServerName  www.aaa.com
>     ProxyPass / http://www.aaa.com:8083/
>     ProxyPassReverse / http://www.aaa.com:8083/
>     SetEnv force-proxy-request-1.0.1
>     SetEnv proxy-nokeepalive 1 
>     </VirtualHost>

下面將IIS服務器和tomcat服務都啓動起來,從上面的配置來看,可以看出我的倆個服務的端口分別爲8083和8084
運行起來之後,通過訪問http://www.aaa.com:8083http://www.bbb.com:8084 倆個網站訪問正常,配置結束

看起來確實比較簡單,但有幾個地方需求注意的
1、IIS服務器默認佔用了80端口,安裝Apache Http Server時如果啓動不成功,請修改IIS服務器的端口爲其他端口,我這裏使用的是8084
2、ProxyPass / http://www.aaa.com:8083/ 這句後面一定要加上“/”,這個問題我找了一天才解決,如果不加上的話,即使網站能夠訪問到,也會顯示不正常,會報類似的錯誤

[Mon Jul 20 16:34:49 2015] [error] [client 127.0.0.1] proxy: DNS
lookup failure for: 127.0.0.1:8084iis-85.png returned by /iis-85.png,
referer: http://www.aaa.com/

以上就是我使用的Apache Http Server代理進行設置80端口共用的配置,反正我是正常運行啦,在過程中也看了網上的例子,有些是明顯錯誤,根本跑不起來,而且同一篇文章被轉發了N次,這裏吐下槽,沒驗證過的東西放到網上,真是害人啊!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章