最有價值的squid3.0配置說明:squid對應不同連接埠提供服務

來源:互聯網
上載者:User

 原文地址:squid對應不同連接埠提供服務 

/***************************原文*****************************/ 

squid對應不同連接埠提供服務

2009-02-05 10:10


轉 by 王斌斌 :

做為筆記

Tool: squid-2.6.STABLE6-4.el5

拓撲圖

如,有兩個網路:公司內部私人網路:192.168.1.0/24;Internet外部網路:10.66.0.0/24。
公司內部網路有兩個伺服器:
Server A提供兩種服務,連接埠81提供服務1,連接埠82提供服務2。
Server B提供一種服務,通過連接埠80來提供服務。
Squid作為公司內部伺服器的反向 Proxy,兩塊網卡,其IP分別是:eth0: 10.66.0.80(接Internet外部網路);eth1:192.168.1.200(接公司內部私人網路)。
Internet外部網路通過SquidProxy 伺服器,訪問公司內部伺服器。例如,Client 10.66.0.174,它不能直接存取公司內部伺服器,而是通過Squid訪問公司內部伺服器。

外部網路用戶端訪問公司內部網路伺服器的流程,舉個例子,如下:
首先,在 Client端修改 /etc/hosts檔案,添加如下三行:
10.66.0.80 www.serverA1.com www
10.66.0.80 www.serverA2.com www
10.66.0.80 www.serverB.com www
註:添加這三行,目的是為了讓用戶端能夠解析這三個網域名稱(www.serverA1.com www.serverA2.com www.serverB.com),其對應IP為10.66.0.80(squid反向 Proxy伺服器的IP)

這裡,Squid反向 Proxy伺服器監聽連接埠:8000 (預設是:3128)

在用戶端,開啟瀏覽器,在瀏覽器地址欄輸入: www.serverA1.com:8000 顯示了用戶端發出這個請求後,到最後收到資料的整個流程。

Phase 1:這裡用戶端在瀏覽器地址欄輸入: www.serverA1.com:8000 通過Client本地 /etc/hosts 解析,網域名稱www.serverA1.com對應的 IP 是10.66.0.80(Squid反向 Proxy伺服器),於是用戶端向 Squid 反向 Proxy伺服器連接埠8000發送請求。
註:在用戶端瀏覽器地址欄輸入: www.serverA1.com:8000 和 http://10.66.0.80:8000 是不一樣的,雖然都是請求 Squid 反向 Proxy伺服器 8000連接埠,但它們有本質的區別。如果通過 IP 方式 http://10.66.0.80:8000 訪問 Squid 伺服器,則不能實現讓 Squid伺服器對內部網路多個伺服器作代理,此時 Squid 只能將用戶端的請求向內部網路的“一個”伺服器作請求。為了實現 Squid 能對內部網路多個伺服器作代理,需要使用網域名稱方式,例如這裡的 www.serverA1.com:8000,Squid 伺服器收到這樣的請求後,它會解析 Host 是 www.serverA1.com ,在配置 Squid 時,有兩個選項,cache_peer 和 cache_peer_domain,這兩個配置項讓 Squid 有能力知道 www.serverA1.com 這個請求最終是想訪問公司內部網路伺服器A(Server A)的 81 連接埠,從而實現了 Squid 對內部多個伺服器作代理的功能需求。(關於 cache_peer和 cache_peer_domain的使用見後文)。

Phase 2:如上所述, Squid 伺服器收到用戶端發來的請求,一看是 www.serverA1.com。Squid知道接下來去請求公司內部網路伺服器A(Server A)的 81連接埠。

Phase 3:Server A 提供的服務1(Service 1)監聽連接埠 81,收到 Squid 發送過來的請求,於是根據請求發送相應資料給 Squid 伺服器。

Phase 4: Squid 收到伺服器A(Server A)從連接埠81發送過來的資料後,會將該資料在本機快取,同時將資料從自己的 8000 連接埠發送給外部網路的用戶端。

上面四個步驟結束後,用戶端就會收到所希望的資料。
值得說明的是:在整個過程中,公司內部網路的伺服器對用戶端是透明的,即用戶端並不知道內部網路究竟有哪些伺服器,提供哪些服務。用戶端僅僅是訪問 Squid 伺服器的8000連接埠,然後獲得相應的資料。

理解上面 Squid 作代理,用戶端的請求流程後,下面介紹 Squid 的一些配置項 ( squid.conf )
註:以下內容是 Squid 一些基本配置項的說明,其中重點解釋給多個伺服器作代理所涉及的配置項。需要讀者對 Squid 有一些基本的認識,另外關於 Squid 還有很多沒提到的配置項,有些配置項是直接影響 Squid 伺服器的效能,這裡不作說明。
Let's begin:)

http_port 8000 vhost # Squid 伺服器監聽本機 8000 連接埠,vhost 支援虛擬機器主機。

cache_peer 192.168.1.50 parent 81 0 no-query originserver weight=1 name=a 
cache_peer 192.168.1.50 parent 82 0 no-query originserver weight=1 name=b
cache_peer 192.168.1.51 parent 80 0 no-query originserver weight=1 name=c
cache_peer_domain a www.serverA1.com
cache_peer_domain b www.serverA2.com
cache_peer_domain c www.serverB.com
從用戶端過來的請求,如果是 www.serverA2.com,則 Squid 向 ServerA 192.168.1.50 的連接埠 82發送請求;
#從用戶端過來的請求,如果是 www.serverB.com,則 Squid 向 ServerA 192.168.1.50 的連接埠 80發送請求;

cache_dir ufs /squid_cache 256 16 256 #指定 Squid 伺服器存放資料的目錄

acl all src 0.0.0.0/0.0.0.0
http_access allow all

cache_peer_access a allow all
cache_peer_access b allow all
cache_peer_access c allow all
#設定存取權限,允許所有外部客戶端訪問 a b c(我們定義的三個虛擬機器主機)

其它配置項預設即可。
註: squid-2.6.STABLE6-4.el5的主設定檔 /etc/squid/squid.conf有四千多行,其中大部分的是注釋,應該說根據這個設定檔配置一個基本的Proxy 伺服器(正向、反向)比較容易。我在配置過程中,遇到的主要問題是不知道如何讓 Squid對多個伺服器作反向 Proxy(不同IP對應的伺服器,同一IP不同連接埠對應的服務 器),在查閱一些文檔,做了很多實驗後,才做成。其關鍵配置項就是這兩個指令: cache_peer 和 cache_peer_domain。這兩個指令也是 squid-2.6 和 squid-2.5的主要區別之一(紅帽 RHLE4整合的是 Squid-2.5,RHEL5整合的是Squid-2.6)。在 squid-2.5中,反向 Proxy所涉及到的關鍵配置指令是:httpd_accel_host, httpd_accel_port, httpd_accel_single_host, httpd_accel_with_proxy, httpd_accel_uses_host_header。httpd_accel_*這一系列的指令,在Squid-2.6中都已經去掉,取而帶之的是 cache_peer, cache_peer_domain, cache_peer_access 這三個指令。

/***************************原文結束*****************************/ 


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.