Saturday, August 25, 2018

[Linux][架站] Ubuntu 16.04 apache 如何設定反向代理(Reverse Proxy)

假設我們有兩個網址 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