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选项来禁止这些协议。
 

 

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