squid web 代理緩存

 Squid Web 代理緩存

Squid是一個能夠作爲HTTP、FTP、以及其他請求的代理服務器使用的互聯網對象緩

存。客戶端會從Squid請求URl,如果之前客戶端想Squid發出過同樣的請求,Squid會根

據緩存副本提供URL,同時裝法與URL相關的動態內容(CGL可執行程序,服務器解析的頁

面,)而不是從緩存中提分工這些內容。

    還可將Squid當做HTTP加速器使用。和Squid作爲代理服務器代表客戶機發出URL請求

一樣,Squid作爲加速器可使用squid服務代表服務器發出URL請求。
    反向代理服務器又稱web加速服務器,位於web服務器前端,充當web服務器的內容緩

存器。反向代理服務器是針對web服務器設置的,後臺web服務器對互聯網用戶是透明的

,用戶只能看到反向代理服務器的地址,不清楚後臺服務器是如何組織架構的。
當用戶請求web服務時,dns將請求的域名解析爲反向代理服務器的ip地址,這樣url請求

將被髮送到反向代理服務器,由反向代理服務器負責處理用戶的請求與應答,與後臺web

服務器交互。
   利用反向代理服務器減輕後臺web服務器的負載,提高訪問速度。避免用用戶直接與

web服務器通信帶來的安全隱患。
反向代理軟件,比較有名的有Nginx和Squid
客戶端請求訪問web服務時,dns將訪問的域名解析爲squid反向代理服務器的ip地址,這

樣客戶端的url請求將發送到反向代理服務器。
如果squid反向代理服務器中緩存了該請求的資源,則將該請求直接返回給客戶端,否則

squid將向後臺的web服務器請求資源,然後將請求的應答返回給客戶端,同時也是將該應

答緩存在本地,供下一個請求者使用。
Squid反向代理一般只緩存可緩衝的數據,如:html靜態網頁和圖片,而一些cgi腳本程

序或者asp,jsp動態程序默認不緩存。
    軟件包:squid
    守護進程:/usr/sbin/squid  服務啓動腳本 /etc/init.d/squid
    端口:3218(可配置)    配置文件:/etc/squid/squid.conf
    配置文件主要選項
     假設前提:代理服務器同時也是網關,內部網絡接口eth0的IP地址爲192.168.0.1

,外部網絡接eth1的IP地址爲202.103.x.x。下面是一個基本的代理所需要配置選項:
     http_port 192.168.0.1:3128
   #默認端口是3128,當然也可以是任何其它端口,只要不與其它服務發生衝突即可。

爲了安全起見,在前面加上IP地址,Squid就不會監聽外部的網絡接口。
    cache_dir ufs /var/squid
    cache_mem 32MB
    cache_swap_low 90
    cache_swap_high 95
   #Squid緩存的文件系統、位置和緩存策略;在這裏,Squid會將/var/squid目錄作爲

保存緩存數據的目錄,每次處理的緩存大小是32兆字節,當緩存空間使用達到95%時,新

的內容將 取代舊的而不直接添加到目錄中,直到空間又下降到90%才停止這一活動。
    cache_access_log /var/squid/access.log
   #用戶的訪問記錄
    visible_hostname No1.proxy
   #Squid在錯誤頁面中顯示的服務器名稱
  訪問控制
    acl advance 192.168.0.2-192.168.0.10/32
    acl normal src 192.168.0.11-192.168.0.200/32
    acl baduser src 192.168.0.100/32
    acl baddst dst www.soocol.com
    acl all src 0.0.0.0/0
    http_access deny baduser
    http_access allow advance
    http_access allow normal
   #all,控制方式是src源IP地址,控制目標是0.0.0.0/0的IP地址,即所有未定義的用

戶。出於安全考慮,總是在最後禁止這個列表。上面幾行代碼告訴Squid不允許baduser

組訪問Internet,但advance、normal組允許(此時還沒有指定詳細的權限)。由於

Squid是按照順序讀取規則,會首先禁止baduser,然後允許normal。如果將兩條規則順

序顛倒,由於baduser在normal範圍中,Squid先允許了所有的normal,那麼再禁止

baduser就不會起作用。
error_directory   /usr/share/squid/errors/SimplyChinese
   #錯誤頁面導向的文件
     激活Squid  
 1)初始化cache目錄
   /usr/local/sbin/squid -z
 2)在開啓squid之前,你應該驗證其配置文件是否正確。運行如下命令即可:
   squid -k parse
 3)啓動squid服務
   service squid start

 5.29補充:反向代理配置和ACL一些實例

訪問控制(ACL)

ACL元素是Squid的訪問控制的基礎。這裏告訴你如何指定包括IP地址,端口號,主機名

,和URL匹配等變量。每個ACL元素有個名字,在編寫訪問控制規則時需要引用它們。基

本的ACL
元素語法如下:
acl name type value1 value2 ...
例如:
acl Workstations src 10.0.0.0/16
在多數情況下,你能對一個ACL元素列舉多個值。你也可以有多個ACL行使用同一個名字



如,下列兩行配置是等價的:
acl Http_ports port 80 8000 8080
acl Http_ports port 80
acl Http_ports port 8000
acl Http_ports port 8080
  IP地址
使用對象:src,dst,
squid在ACL裏指定IP地址時,擁有強有力的語法。你能以子網,地址範圍,域名等形式

編寫地址。
有時候你可能想列舉多個相鄰子網,在這樣的情況下,通過指定地址範圍很容易做到。

例如:
acl Bar src 172.16.10.0-172.16.19.0/24
正則表達式
使用對象:url_regex, urlpath_regex, browser,
大量的ACL使用正則表達式來匹配字符串,對squid來說,最常使用的正則表達式功能用

以匹配字符串的開頭或結尾。例如,^字符是特殊元字符,它匹配行或字符串的開頭:
^http://
該正則表達式匹配任意以http://開頭的URL。$也是特殊的元字符,因爲它匹配行或字符

串的結尾:
.jpg$
TCP端口號
使用對象:port
該類型是相對的。值是個別的端口號或端口範圍。
acl Foo port 123
acl Bar port 1-1024
proto
該類型指URI訪問(或傳輸)協議。如下是有效值:http, https , ftp。
acl FTP proto FTP
http_access deny FTP
反向代理
配置
 http_port IP:80  vhost #配置 squid 爲加速模式,vhost 支持虛擬主機。
cache_peer 192.168.1.51 parent 80 0  originserver weight=200  max-conn=50
cache_peer 192.168.1.52 parent 80 0  originserver weight=200  max-conn=400
cache_peer 192.168.1.53 parent 80 0 originserver weight=100  max-conn=400

cache_peer指令定義鄰居cache,並告訴squid如何與它的鄰居通信:
cache_peer hostname type http-port icp-port [options]
第1個參數是鄰居的主機名,或IP地址。可以安全的在這裏使用主機名,因爲squid會解
析它們。在squid運行期間,主機名對應的IP地址可能會改變,所以實際上squid會週期
性的解析主機名。鄰居主機名必須唯一:不能在2個鄰居cache上使用同樣的主機名,即
使它們有不同的端口。
第2個參數指定鄰居cache的類型。有3個選擇:父親,姐妹,或廣播。父親和姐妹關係容
易理解。
第3個參數是鄰居HTTP端口號。它應該等同於鄰居的http_port設置。總是應該指定1個
非零的HTTP端口號。
第4個參數指定ICP或HTCP端口號。squid默認使用ICP來查詢其他cache。也就是說,
squid發送ICP查詢到鄰居cache的指定端口。假如你增加了htcp選項,squid就會發送
HTCP查詢到這個端口。默認的ICP端口是3130,默認的HTCP端口是4827。假如增加了
htcp選項,請記得改變它的端口號。將端口號設爲0,會禁止ICP和HTCP。然而,應該使
用no-query選項來禁止這些協議。
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章