反向代理設定 Reverse Proxy ,用於將外部網路連入的連線,再依據需求與設定各自分配到特定的IP或Port或網址上。進而達到 單一外部IP 對應多內部IP的功能。
應用情境:
- 外部IP只有一個,卻要將不同的網址指向不同的服務時。
-
單一主機架設超過一個Apache時,利用不同的網址來指向各個Apache服務
-
當內網中有多台主機同時使用同一個外部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
- 同一台主機上架設不同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