TShopping

 找回密碼
 註冊
搜索
查看: 4163|回復: 5

[教學] 使用 Reverse Proxy代理服務

    [複製鏈接]
發表於 2008-5-19 11:51:38 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk Push to Twitter 
使用 Reverse Proxy代理服務

談到 Proxy 這個用字,一般人想到的就是 HTTP Proxy,也就是可以調整瀏覽器的代理設定指向某一台主機,後續存取任何站台時就會透過該 Proxy Server 代為連線抓取資料,最後回應給瀏覽器最終的資料。
不過傳統的 Proxy Server 架設已經很常見所以許多地方都可以找到這類架設的配置文件。本文將討論比較進階Proxy 代理設定,提供在某些環境下可以透過該配置達成特殊的目的
淺談 proxy 代理的功能
所謂的 Proxy Server,也就是提供給 client 端可以連線到該主機下達特定的命令,然後該 Proxy Server 會依據該命令再連線到指定主機進行資料傳輸溝通,最後把資料的內容再回應給 Client 端即完成了溝通操作。以 UNIX 環境來說,目前廣泛的 Server 服務環境會安裝squid proxy server 進而達成該需求。 就可以達成該需求,該連結存取的網路環境如下圖表示:

如上圖的網路環境來說,在 61.16.1.1 架設 Squid Proxy 服務可提供61.16.1.0/24 的 Client 端為代理伺服器,那後續存取 Internet 的 Web 站台的話就會透過該 Proxy Server 進行代理。傳統該 Proxy 架構來說,由於 Client 端存取 Internet 上的 Web 主機資料是該 Proxy Server 進行代理的,所以可以減少重複的資料抓取請求進而節省對外頻寬的耗費,進而讓網路頻寬能夠更有效益的使用。
在 Firewall 網路架構內常常也會搭配 Proxy Server 區隔網路環境架構,連結存取的網路架構如下表示:

上圖的網路架構來看,內部網路是獨立區隔開的,也就是內部網路無法直接連線到 Internet 上,在 Proxy Server 主機上安裝了 squid 程式之後即可提供 192.168.1.0/24 這些內部 Client 主機代理使用。這個架構來看好處就是除了傳統加速的代理功能外,亦可提供位於私有 IP 區段的內部網路可以獨立外,又能購有連結外部 Internet 存取 Web 站台的功能。
Reverse Proxy 架構
前面剛剛談的都是正向的 Proxy 功能,一般稱呼為 Forward Proxy,也就是 Client 端使用該 Proxy 的服務請求要連線到哪一台主機,該 Proxy Server 忠實的代外連結抓取資料後再傳回給 Client 使用。不過 Proxy Server 的架構有所謂的逆向代理,一般又稱呼為 Reverse Proxy,可以提供將特定的 Web 主機服務獨立區隔開,然後透過 Proxy Server 來連線到這些實際服務機器,達成資料價素與保護實際 Web Server 的功能。如下列的網路架構表示:

以上圖的網路架構來看,也就是有兩台提供 Web服務的機器,其 IP 分別是 192.168.1.1 與 192.168.1.2。由於該 IP 本身為 Private IP 所以外部 Internet 的來源都無法連結存取,所以可以透過 Proxy Server 當中繼代理功能進而對外提供服務,而這個架構一般就是稱呼為 Reverse Proxy。

Reverse Proxy 的好處?
那使用 Reverse Proxy 的好處在哪邊呢?
  • 區隔內部與外部網路,外部主機無法直接連到該 Web Server,
保護內部 Web Server 不受到外部直接連結引起的問題
  • 因為 Proxy 代理架構,所以瀏覽網站的資料都會透過 Proxy Server
進行代理與快取,所以若是要瀏覽抓取的資料已經存在於 Proxy Server
主機時時就不需要再次連結到實際的 Web Server,如此可以減少 Web
Server 的負擔
Reverse Proxy 網路架構配置
架設提供 Reverse Proxy 服務的軟體套件很多,比方傳統 UNIX 架設 proxy 軟體的 squid 程式就可以達成該需求。另外常見用於 Web Server 的 apache 也可以達成相同的功能。
先確認一下目前網路環境架構與 IP 組態配置:

目前的架構需求,提供如下:
  • 外部存取 www.abc.com.tw 時,可以存取 Web Server1 主機服務
  • 外部存取 www.xyz.com.tw 時,可以存取 Web Server2 主機服務
由於 Proxy 主機要提供 Reverse Proxy 服務,所以 DNS 紀錄配置如下:
  • www.abc.com.tw,IP為 61.16.1.1
  • ww.xyz.com.tw,IP 為61.16.1.1

也就是外部主機連結 www.abc.com.twwww.xyz.com.tw 時都表示存取 Proxy Server 這台機器,然後該機器會依據HTTP 請求進行實際代理功能。
Reverse Proxy 服務配置 ( Squid 部份 )
軟體配置部份,首先先介紹的是 squid 本身的組態配置。架設讀者已經熟
悉基礎的 squid proxy 的組態配置,那剩餘就是使用如下的組態配置即可達成所需要的功能。squid.conf 配置如下:
  • http_port? 80? vhost vport

  • cache_peer 192.168.1.1 parent 80 0 originserver
no-query? name=server1
  • cache_peer 192.168.1.2 parent 80 0 originserver
2 no-query? name=server2

上面配置來說,也就是告訴 squid proxy 有請求是要連到 www.abc.com.tw 站台時,指定使用 192.168.1.1 進行代理。另外若是有請求是要連到 www.xyz.com.tw 站台時,指定使用 192.168.1.2 來代理。當然,不要忘記設定必要的 http_access 與 acl 項目設定,如此 squid 才會允許可以連線到 www.abc.com.twwww.xyz.com.tw 這兩台目的主機。
Reverse Proxy 服務配置 ( Apache 部份 )
那目前常用架設web server 的apache 本身的 Reverse Proxy 設定如何設定
呢?其設定主要片段如下:
  • -----------------------------------------------------------------------
  • NameVirtualHost *:80
  • -----------------------------------------------------------------------
  • <VirtualHost *:80>
  • </VirtualHost>
  • -----------------------------------------------------------------------
  • <VirtualHost *:80>
  • </VirtualHost>
  • -----------------------------------------------------------------------

這部份是透過 Apache Virtual Host 達成的,也就是透過 ProxyPass 的指定
述提供內部另外的代理功能。不過還需要開放允許 Proxy 的權限設定,需要有如下配置:
  • -----------------------------------------------------------------------
  • <;Proxy? http://192.168.1.1/>;
    • Order Allow,Deny
    • Allow from all
  • </Proxy>
  • -----------------------------------------------------------------------
  • <;Proxy? http://192.168.1.1/>;
    • Order Allow,Deny
    • Allow from all
  • </Proxy>
  • -----------------------------------------------------------------------

Reverse Proxy 服務其他應用
上面談 Reverse Proxy 似乎都是搭配應用位於 Private IP 區段的主機來提供服務,不過實際上可以做更多變化。比方 apache 如下配置:

這就表示存取 http://www.xyz.com.tw 時將相當於透過該 Proxy Server 再連線到 http://www.seed.net.tw/。所以實務應用上若是 www.seed.net.tw 限制只有特定來源才可以瀏覽存取,而剛好這台 www.xyz.com.tw 本身的 IP 就是在白名單內的話,透過該方式就可以開啟 “後門” 提供外部可以實際存取 www.seed.net.tw 站台服務。
參考資料來源

    • Squid 官方網站
    • http://www.squid-cache.org/
    • Squid 文件
    • http://wiki.squid-cache.org/SquidFaq/
    • Apache Proxy 文件

      • http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

 

臉書網友討論
發表於 2014-6-19 23:16:55 | 顯示全部樓層
我也想听大家的建议!谢

版主招募中

 樓主| 發表於 2014-9-12 22:41:27 | 顯示全部樓層
我喜歡!感謝大大的分享


您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2016-12-5 16:42 , Processed in 0.059363 second(s), 22 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表