為了解決我的 WEB BBS 和 WEBSITE 開在同一台伺服器上沒辦法共用 port 80 的困擾,所以我找了一些文件,發現有簡單的方法可以解決我的問題。
我有兩個 DN ,分別是 roga.tw (網站) 和 Lab3.tw (BBS),這兩個名稱都是指向同一個 IP 同一台主機,但由於兩者程式不同,所以沒辦法共用 Port 80 ,之前採用的方法是把。web bbs 的服務開啟在 port 8080 ,也就是 http://Lab3.tw:8080 , 而 port 80 則是給 apache 使用,網址就是 http://roga.tw 。
但是我現在希望讓使用者輸入 Lab3.tw 就可以直接連接到 Port 8080 的 WEB BBS 。而 roga.tw 則依然連到 Apache 網站。今天我的希望總算被我弄成功了!方法是透過 Apache 的 module proxy + Virtual Host 來實現。
首先,先設定 DNS 的對應,把 Lab3.tw 和 roga.tw 都對應到同一組 IP (不管是用 CNAME 或是 A record 都可)。
接著要啟動 Apache 的 Vhost 的功能,並且要啟動 Proxy 功能(簡單的說,就是要載入 mod_proxy 和 mod_vhost )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#以下是 Lab3.tw 的 vhost 設定 <virtualHost 220.130.223.205> ServerName lab3.tw ProxyRequests On <directory proxy:*> Order deny,allow Deny from all Allow from all </directory> ProxyPass / http://Lab3.tw:8080/ </virtualHost> #以下是 roga.tw 的 vhost 設定 <virtualHost 220.130.223.205> DocumentRoot /var/www/ ServerName roga.tw <directory "/var/www/"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </directory> </virtualHost> |
這邊需要注意的是 Lab3.tw 的 Vhost 設定,很容易就完成了,不是嗎? 🙂
當然,也可以讓不同目錄 ProxyPass 到不同目標,範例如下:
1 2 3 4 5 6 |
#mod_proxy 當然也可以對應到目錄 ProxyPass / http://roga.tw/ ProxyPass /mail http://mal.roga.tw/ ProxyPass /bbs http://roga.tw:8080/ |
相當容易就可以完成的設定 😛
Roga兄你好:
最近我剛好也有用到一些 proxypass
剛好在網路上搜尋到您這篇文章
起初架設一切良善,主機跑的網址也都ok
不過後來發現流量變大,且大的誇張,發現 /var/log/apache2/access.log 出現一大堆來自世界各地的訊息
我在想是不是 http 變成別人免費的proxy跳板了
ProxyRequests On -> 後來發現似乎是這個造成
ProxyRequests Off 我將他 off 掉後,流量就不再增加,原本需要的功能也仍正常運作
不知道在您的環境也不會有這樣的問題
不好意思,其實我很久沒用 mod_proxy 了,這麼模組的參數設定可以參考一下手冊
http://www.phpchina.com/resource/manual/apache/mod/mod_proxy.html
的確如您所說, ProxyRequests 其實應該設定為 Off 比較好。
这项功能是不需要mod_proxy的,只需要开启vhost
當時的環境下, Web BBS 是由另一個 Process 來跑的(並非 Apache),所以不能用 vhost 。
啊,看到你的文章,我終於搞定了我的config哪裡有錯 - 在proxypass一定要寫DN……
謝謝!
请问你的服务器环境怎么样?能具体点吗