squid反向代理配置,做爲web服務器的前端內容緩存器。

squid反向代理配置,做爲web服務器的前端內容緩存器。

本文在介紹 squid 反向代理的工做原理的基礎上,指出反向代理技術在提升網站訪問速度,加強網站可用性、安全性方面有很好的用途。做者在具體的實驗環境下,利用 DNS 輪詢和 Squid 反向代理技術,實現了網站的負載均衡,從而提升了網站的可用性和可靠性。
如今有許多大型的門戶網站如 SINA 都採用 squid 反向代理技術來加速網站的訪問速度,可將不一樣的 URL 請求分發到後臺不一樣的 WEB 服務器上,同時互聯網用戶只能看到反向代理服務器的地址,增強了網站的訪問安全。
反向代理的概念
反向代理服務器又稱爲 WEB 加速服務器,它位於WEB 服務器的前端,充當WEB 服務器的內容緩存器。其系統結構如圖 1

圖 1. 系統結構
系統結構
反向代理服務器是針對 WEB 服務器設置的,後臺 WEB 服務器對互聯網用戶是透明的,用戶只能看到反向代理服務器的地址,不清楚後臺 WEB 服務器是如何組織架構的。當互聯網用戶請求 WEB 服務時,DNS 將請求的域名解析爲反向代理服務器的 IP 地址,這樣 URL 請求將被髮送到反向代理服務器,由反向代理服務器負責處理用戶的請求與應答、與後臺 WEB 服務器交互。利用反向代理服務器減輕了後臺 WEB 服務器的負載,提升了訪問速度,同時避免了因用戶直接與 WEB 服務器通訊帶來的安全隱患。
Squid 反向代理的實現原理
目前有許多反向代理軟件,比較有名的有 Nginx 和 Squid 。 Nginx 是由 Igor Sysoev 爲俄羅斯訪問量第二的 Rambler.ru 站點開發的,是一個高性能的 HTTP 和反向代理服務器,也是一個 IMAP/POP3/SMTP 代理服務器。
Squid 是由美國政府大力資助的一項研究計劃,其目的爲解決網絡帶寬不足的問題,支持HTTP,HTTPS,FTP 等多種協議,是如今 Unix 系統上使用、最多功能也最完整的一套軟體。下面將重點介紹 Squid 反向代理的實現原理和在提升網站性能方面的應用。
Squid反向代理服務器位於本地 WEB 服務器和 Internet 之間 , 組織架構如圖 2:

圖 2. 組織架構
組織架構
客戶端請求訪問 WEB 服務時,DNS 將訪問的域名解析爲 Squid 反向代理服務器的 IP 地址,這樣客戶端的 URL 請求將被髮送到反向代理服務器。若是 Squid 反向代理服務器中緩存了該請求的資源,則將該請求的資源直接返回給客戶端,不然反向代理服務器將向後臺的 WEB 服務器請求資源,而後將請求的應答返回給客戶端,同時也將該應答緩存在本地,供下一個請求者使用。
Squid 反向代理通常只緩存可緩衝的數據(好比 html 網頁和圖片等),而一些 CGI 腳本程序或者 ASP、JSP 之類的動態程序默認不緩存。它根據從 WEB 服務器返回的 HTTP 頭標記來緩衝靜態頁面。有四個最重要 HTTP 頭標記:
Last-Modified: 告訴反向代理頁面什麼時間被修改
Expires: 告訴反向代理頁面什麼時間應該從緩衝區中刪除
Cache-Control: 告訴反向代理頁面是否應該被緩衝
Pragma: 用來包含實現特定的指令,最經常使用的是 Pragma:no-cache
利用 Squid 反向代理加速網站實例
本實例的域名是 wenjin.cache.xxx.com.cn,經過DNS的輪詢技術,將客戶端的請求分發給其中一臺 Squid 反向代理服務器處理,若是這臺 Squid 緩存了用戶的請求資源,則將請求的資源直接返回給用戶,不然這臺 Squid 將沒有緩存的請求根據配置的規則發送給鄰居 Squid 和後臺的 WEB 服務器處理,這樣既減輕後臺 WEB 服務器的負載,又提升整個網站的性能和安全性。該系統結構圖 3 以下:
圖 3. 系統結構 系統結構 配置的系統環境: 一臺 DNS 服務器:操做系統 Freebsd,軟件 BIND 9.5,IP 192.168.76.222 ; 三臺 Squid 服務器:操做系統 Linux AS 4,軟件 Squid 3.0,相應的 IP 以下:  Squid1:192.168.76.223  Squid2:192.168.76.224  Squid3:192.168.76.225  三臺 WEB 服務器:操做系統 Linux AS 4,應用軟件 Tomcat 5.0+Mysql,相應的 IP 地址以下:  webServer1:210.82.118.195  webServer2:192.168.76.226  webServer1:192.168.76.227 應用軟件的安裝和配置 配置 DNS 服務器 軟件利用 Freebsd 自帶的 bind 9.5 。而後針對該系統配置 bind,首先修改 bind 的配置文件 /etc/namedb/named.conf,在文件中添加 複製代碼 代碼以下:zone "cache.xxx.com.cn"{ type master; file "master/ cache.xxx.com.cn ";  };再在 /etc/namedb/master 目錄下添加 cache.xxx.com.cn 文件,該文件的內容以下: 複製代碼 代碼以下:$TTL3600  @   IN  SOA search. xxx.com.cn. root. xxx.com.cn.  ( 20080807; Serial 3600; Refresh 900 ; Retry 3600000 ; Expire 3600 )  ; Minimum IN  NS  search.xxx.com.cn.  1   IN  PTR localhost.xxx.com.cn.  wenjin  IN  A   192.168.76.223  wenjin  IN  A   192.168.76.224  wenjin  IN  A   192.168.76.225這樣當用戶請求的時候,DNS 經過輪詢機制將 wenjin.cache.xxx.com.cn 的域名解析爲 192.168.76.22三、192.168.76.224 和 192.168.76.225 其中之一。 配置完成後,運行 rndc star t 啓動 bind 服務。可在 /etc/rc.conf 中設置 named_enable="YES" 使得開機自啓動。 用 ps – A |grep named 查看 bind 服務是否起來; 用 nslookup wenjin.cache.xxx.com.cn 測試 bind 服務是否正常運行。 配置 Squid1 服務器 下載 squid-3.0.STABLE8.tar.gz 源碼包,將其放在 /home 目錄下 解壓縮tar – zxvf squid-3.0.STABLE8.tar.gz 設置配置參數:cd squid-3.0.STABLE10 ./configure – prefix=/usr/local/squid 將 squid 安裝在 /usr/local 目錄下 編譯安裝:make&make install安裝完之後會在 /usr/local 目錄下看見 squid 目錄。 配置 squid 配置文件 編輯 squid.conf 文件,vi /usr/local/squid/etc/squid.conf 複製代碼 代碼以下: cache_effective_user squid  cache_effective_group squid  ######### 設定 squid 的主機名 , 如無此項 squid 將沒法啓動  visible_hostname squid1.nlc.gov.cn  ############# 配置 squid 爲加速模式 #################  http_port 80 accel vhost vport  icp_port 3130  ##### 配置 squid二、squid3 爲其鄰居,當 squid1 在其緩存中沒有找到請求的資源時,   經過 ICP 查詢去其鄰居中取得緩存  cache_peer squid2.xxx.com.cn sibling 80 3130  cache_peer squid3.xxx.com.cn sibling 80 3130  ##### squid1 的三個父節點,originserver 參數指明是源服務器,  round-robin  參數指明 squid 經過輪詢方式將請求分發到其中一臺父節點;  squid 同時會對這些父節點的健康狀態進行檢查,若是父節點 down 了, 那麼 squid 會從剩餘的 origin 服務器中抓取數據  cache_peer 210.82.118.195 parent 8080 0 no-query originserver round-robin   name=webServer1  cache_peer 192.168.76.226 parent 8080 0 no-query originserver round-robin   name=webServer2  cache_peer 192.168.76.227 parent 8080 0 no-query originserver round-robin name=webServer3  #### 將 wenjin.cache.xxx.com.cn 域的請求經過 RR 輪詢方式轉發到三個父節點中的一個  cache_peer_domain webServer1 webServer2 webServer3 wenjin.cache.xxx.com.cn  ##### 下面是一些訪問控制、日誌和緩存目錄的設置  acl localnet src 192.168.76.223 192.168.76.224 192.168.76.225  acl all src 0.0.0.0/0.0.0.0  http_access allow all  icp_access allow localnet  cache_log /usr/local/squid/var/logs/cache.log  access_log /usr/local/squid/var/logs/access.log squid  cache_dir ufs /usr/local/squid/var/cache/ 1000 16 256  ####### 對 squid 的一些優化 ###############  maximum_object_size 10240 KB  ### 能緩存的最大對象爲 10M  maximum_object_size_in_memory 512 KB ### 內存中緩存的最大對象 512K  cache_mem 256 MB  ###squid 用於緩存的內存量保存後 :wq 退出。 在 /etc/hosts 文件中添加 複製代碼 代碼以下:192.168.76.223  squid1.xxx.com.cn 192.168.76.224  squid2.xxx.com.cn 192.168.76.225  squid3.xxx.com.cn保存後 : wq 退出。 檢查 squid 配置文件正確與否:/usr/local/squid/bin/squid – k parse 生成緩存目錄/usr/local/squid/bin/squid – z 啓動squid:/usr/local/squid/bin/squid 配置 squid2 和 squid3 服務器 squid2 和 squid3 服務器的配置方法和配置參數和 squid1 同樣,配置完成後,分別啓動這兩個服務器上的 squid 服務。 在 squid 的日誌文件 cache.log 中,出現以下日誌信息則說明三臺 squid 之間成功配置爲 sibling,且配置了三個父代理。  2008/11/17 10:08:47| Configuring Sibling squid1.xxx.com.cn/80/3130  2008/11/17 10:08:47| Configuring Sibling squid3.xxx.com.cn/80/3130  2008/11/17 10:08:47| Configuring Parent 210.82.118.195/8080/0  2008/11/17 10:08:47| Configuring Parent 192.168.76.226/8080/0  2008/11/17 10:08:47| Configuring Parent 192.168.76.227/8080/0  2008/11/17 10:08:47| Ready to serve requests. 測試 測試以前,保證 DNS 服務、三臺 squid 服務和三臺 web 服務都正常起來。在客戶端輸入http://wenjin.cache.xxx.com.cn,則正確的顯示該網頁。服務器端的響應對客戶端是透明的,客戶端不知道請求是由哪臺 WEB 服務器處理的;並且其中某臺 Squid 服務器或 WEB 服務器發生故障,也不影響服務的正常運行。 總結 Squid 是一個開源的軟件,利用它的反向代理技術能夠提升網站系統的訪問速度。本文在真實的網絡環境下,利用三臺 squid 反向代理服務器加速了網站的性能,同時結合 DNS 輪詢技術實現了網站的負載均衡。通過一段時間的測試和試運行,該網站的訪問速度和可用性方面都有很大的提升,從未出現過網站服務中斷狀況。 您可能感興趣的文章: squid2.7反向代理配置示例 linux下Squid反向代理搭建CDN緩存服務器的方法詳解 squid3反向代理加速配置的例子 squid2.7 經過域名反向代理多個服務器的配置方法 squid3安裝與反向代理配置一例 squid2.6反向代理實驗模型 squid反向代理服務器加速web squid反向代理配置(web服務器的前端內容緩存器) 本文原始連接:http://www.jbxue.com/article/948.html
相關文章
相關標籤/搜索