假設我們有兩個網址 https://site1.myweb.com 及 https://site2.myweb.com, 我們希望使用者連到 site1 時,顯示 site2 的內容,就可以使用反向代理(Reverse Proxy)來達成。
什麼情形會需要這樣的設定呢?舉例來說:site2 是舊版本的 apache 只支援到 TLS 1.0,在無法升級 site2 主機的前提下,可以透過反向代理,來讓擁有新版 apache(支援 TLS 1.1 & 1.2) 的 site1 當作 site2 的入口。
反向代理(Reverse Proxy) 的設定如下...
登入 site1 主機:
$sudo su -
#cd /etc/apache2/sites-available
#vim site1.myweb.com.conf
編輯 conf檔 前,先參考 Ubuntu 16.04 如何設定 apache 的 VirtualHost 及 Ubuntu 16.04 如何啟用SSL 讓網址支援 https:// 貼上文章中的 80 port 與 443 port 的設定內容後(網址記得要改),只需在 443 port 區塊內加入反向代理的設定:
<VirtualHost *:80>
(參考文章 80 port 設定內容)
</VirtualHost>
<VirtualHost *:443>
(參考文章 443 port 設定內容)
SSLProxyEngine on
ProxyPass / https://site2.myweb.com/
ProxyPassReverse / https://site1.myweb.com/
RequestHeader unset Accept-Encoding
AddOutputFilterByType SUBSTITUTE text/html text/php application/json image/png
Substitute "s|https://site2.myweb.com|https://site1.myweb.com|n"
Substitute "s|http://site2.myweb.com|http://site1.myweb.com|n"
SubstituteMaxLineLength 100m
Timeout 600
ProxyTimeout 600
ProxyRequests off
ProxyPreserveHost On
</VirtualHost>
#service apache2 restart
這時瀏覽器輸入 site1.myweb.com 應該就會看到 site2 的網站內容了。
No comments:
Post a Comment