每月彙整: 2019 年 1 月

[Apache] 反向代理設定 Reverse Proxy

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

 

應用情境:

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

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

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

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

 

1. 開啟Proxy的mod

首先要再 httpd.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

2. 同一台主機上架設不同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