[Apache] 反向代理設定 Reverse Proxy

反向代理設定 Reverse Proxy ,用於將外部網路連入的連線,再依據需求與設定各自分配到特定的IP或Port或網址上。進而達到 單一外部IP 對應多內部IP的功能。

應用情境:

  1. 外部IP只有一個,卻要將不同的網址指向不同的服務時。

  2. 單一主機架設超過一個Apache時,利用不同的網址來指向各個Apache服務

  3. 當內網中有多台主機同時使用同一個外部IP時,用於各自指向網址時。

用個比較簡單的說法來說,或許可以把它當作一個簡單的DNS服務,來轉向網域、子網域等…
到指定的IP位置上 (通常為指定到虛擬IP上或是不同Port上)

 

1. 啟用 Proxy 的相關 mod

首先我們要在 apache 的 conf 中啟用相關要啟用的mod

舊版本的Apache可能在 /httpd/conf/httpd.conf 之中
新版本的Apache可能在 /httpd/conf.modules.d/00-proxy.conf 之中

並且將以下兩個mod前方的井號去除。

#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_http_module modules/mod_proxy_http.so

2. 在 vhosts 設定中增加要反解的網域

<VirtualHost *:80>
  ServerName yourdomain.com
  ProxyRequests off
  <Proxy *>
    Order allow,deny
    Allow from all
  </Proxy>

  ProxyPass / http://192.168.1.99
  ProxyPassReverse / http://192.168.1.99
  ProxyPreserveHost on
</VirtualHost>

以上的設定,代表 yourdonain.com 這個網域在連入你的Apache後,
會被重新指指向到 192.168.1.99 這個IP位置,這個可以是內網IP、外網IP、或網址。

但重點在於,你安裝Apache的這台主機必須要可以連到那個地方!

這裡有幾種變化可以參考:

  1.內網中另一台主機
    ProxyPass / http://192.168.1.99
ProxyPassReverse / http://192.168.1.99

  1. 同一台主機上架設不同Port的服務 (或許是另一個Apache…)
    ProxyPass / http://127.0.0.1:81
        ProxyPassReverse / http://127.0.0.1:81

說明:

第一個反斜線代表 yourdomain.com 這個網域連入時的目錄,這裡我們設定為根目錄就進行轉址。

 

3. 重啟 Apache

設定完成後,重新啟動 Apache,vhost就會自動進行IP的轉置了,
但此處你需要特別注意,如果你轉過去的服務也是Apache之類的服務,
你仍然必須要在那邊的設置中設定網域!才能夠對應到正確的目錄以及正確的功能。

 

參考資料:DAVIDOU的 BLOG http://blog.davidou.org/archives/1334