2006
10.08

簡單弄一弄 Apache 的 Proxy 功能

為了解決我的 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 )


#以下是 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 到不同目標,範例如下:

#mod_proxy 當然也可以對應到目錄
      ProxyPass /          http://roga.tw/
      ProxyPass /mail      http://mal.roga.tw/
      ProxyPass /bbs       http://roga.tw:8080/

相當容易就可以完成的設定 :P

2 comments so far

Add Your Comment
  1. 请问你的服务器环境怎么样?能具体点吗

  2. 啊,看到你的文章,我終於搞定了我的config哪裡有錯 - 在proxypass一定要寫DN……

    謝謝! :mrgreen:

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>