squid配置参数的一些解释.docx
- 文档编号:5043075
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:9
- 大小:22.12KB
squid配置参数的一些解释.docx
《squid配置参数的一些解释.docx》由会员分享,可在线阅读,更多相关《squid配置参数的一些解释.docx(9页珍藏版)》请在冰豆网上搜索。
squid配置参数的一些解释
squid配置参数的一些解释
2010-09-1410:
43:
14
标签:
squid参数解释
bbb_port3128
#一般squid仅对80端口的bbb服务加速。
使用bbb_port指令让squid侦听在该端口:
bbb_port80
假如想让squid既作cache代理,又作加速器,那么列出这2个端口,但是所有指定的端口都必须在一条命令行上:
bbb_port80bbb_port3128
logfile_rotate3
#周期性的滚动日志文件,以阻止它们变得太大。
为了合理控制磁盘空间消耗,在cron里使用如下命令:
%squid-krotate
例如,如下任务接口在每天的早上4点滚动日志:
04***/usr/local/squid/sbin/squid-krotate
工作过程:
该命令做两件事。
首先,它关闭当前打开的日志文件。
然后,通过在文件名后加数字扩展名,它重命名cache.log,store.log,和access.log。
例如,cache.log变成cache.log.0,cache.log.0变成cache.log.1,如此继续,滚动到logfile_rotate选项指定的值。
cache_mem1024MB
指定squid可以使用的内存理想值,建议设为内存的1/3.
#此参数并非指定进程的最大值,它只是设定一个squid能够用于多少额外的内存来缓存对象的限制值,squid在其他方面也需要使用内存。
read-only
read-only选项指示Squid继续从cache_dir读取文件,但不往里面写新目标。
他在squid.conf文件里看起来如下:
cache_dirufs/cache0700016256read-only
如果你想把cache文件从一个磁盘迁移到另一个磁盘,那么可使用该选项。
如果你简单的增加一个cache_dir,并且删除另一个,squid的命中率会显著下降。
在旧目录是read-only时,你仍能从那里获取cache命中。
在一段时间后,就能从设置文件里删除read-only缓存目录。
max-size
使用该选项,你能指定存储在cache目录里的最大目标大小。
例如:
cache_dirufs/cache0700016256max-size=1048576
注意值是以字节为单位的。
在大多数情况下,你不必增加该选项。
如果你做了,请尽力将所有cache_dir行以max-size大小顺序来存放(从小到大)。
#cache_swap_low和cache_swap_high指令控制了存储在磁盘上的对象的置换。
它们的值是最大cache体积的百分比,这个最大cache体积来自于所有cache_dir大小的总和。
例如:
cache_swap_low90
cache_swap_high95
如果总共磁盘使用低于cache_swap_low,squid不会删除cache目标。
如果cache体积增加,squid会逐渐删除目标。
在稳定状态下,你发现磁盘使用总是相对接近cache_swap_low值。
你可以通过请求cache管理器的storedir页面来查看当前磁盘使用状况
请注意,改变cache_swap_high也许不会对squid的磁盘使用有太大效果。
在squid的早期版本里,该参数有重要作用;然而现在,它不是这样了。
如果不想squid缓存任何文件,如某些空间有限的专有系统,可以使用null文件系统(这样不需要哪些缓存策略)
Cache_dirnull/tmp
cache_varyon(默认on 表示可以缓存静态文件)
aclapacherep_headerServer^Apache
broken_vary_encodingallowapache
cache_replacement_policyheapGDSF
memory_replacement_policyheapGDSF
#cache的替换策略,对于小文件比较多的缓存服务器,采用GDSF容易获得比较好的命中
率,特别是内存命中率.
minimum_object_size0KB
maximum_object_size6MB
大于该值得对象将不被存储。
如果要提高访问速度,就降低该值;如果想最大限度的节约带宽,降低成本,就增加该值。
maximum_object_size_in_memory1024KB
设置较小的maximum_object_size_in_memory值有助于有效控制squid过度占用内存
cache_diraufs/opt/squid/cache40001632
cache_diraufs/opt/squid/cachedir/cache0140001632
cache_log/opt/squid/var/logs/cache.log
#cache_dir指令是squid.conf配置文件里最重要的指令之一。
它告诉squid以何种方式存储cache文件到磁盘的什么位置。
cache_dir指令取如下参数:
#缓存目录的设置,可以设置多个缓存目录,语法为:
cache_diraufs/opt/squid/cachedir/cache0140001632表示
其中4000该目录下使用的缓冲值为4000MB 16是cache01下子目录数量32是cache01下子目录的下一级目录的数量
strip_query_termsoff
#该指令是另一个隐私保护功能。
在记录请求前,Squid删除了查询条件。
假如日志文件不幸落入坏人之手,他们不会找到任何用户名和密码。
当该指令激活时,在问号(?
)之后的所有字节被删除。
例如,某个URl如下:
bbb:
//auto.search.msnaaa/response.asp?
MT=aaakimoaaa.yw&srch=3&prov=&utf8
会被记录为:
bbb:
//auto.search.msnaaa/response.asp?
aclnologurlpath_regex-i\.dll
emulate_bbbd_logon
logformatcombined%>a%ui%un[%tl]"%rm%rubbb/%rv"%Hs%
%Sh!
nolog
#所有日志格式按照apache标准格式输出,并且不记录nolog定义的访问日志eg:
192.168.19.212--[23/Oct/2008:
00:
00:
24+0800]"GETbbb:
//images.zhaopinaaa/new4/images/nub/1.gifbbb/1.0"3040"bbb:
//aaazhaopinaaa/beijing/?
DYWE=1224581170741.435762.1224638441.1224644873.3""Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1;.NETCLR2.0.50727;.NETCLR3.0.04506.30)"TCP_IMS_HIT:
NONE
要记录源IP位置:
logformatcombined%{X-Forwarded-For1}>h%>a%ui%un[%tl]"%rm%rubbb/%rv"%Hs%
%Sh
日志即为:
82.145.157.175192.168.10.114--[14/Dec/2009:
09...
同理:
aclnologurlpath_regex-i\.css\.js\.swf
cache_access_log/opt/squid/var/logs/access.logcombined!
nolog
access_log/opt/squid/var/logs/newaccess.log!
nolog
上面记录的日志中就不包含\.css \.js \.swf类型的访问日志
注:
apache格式串变量的含义:
%...a:
远程IP位置
%...A:
本地IP位置
%...B:
已发送的字节数,不包含bbb头
%...b:
CLF格式的已发送字节数量,不包含bbb头。
例如当没有发送数据时,写入‘-’而不是0。
%...{FOOBAR}e:
环境变量FOOBAR的内容
%...f:
文件名字
%...h:
远程主机
%...H请求的协议
%...{Foobar}i:
Foobar的内容,发送给服务器的请求的标头行。
%...l:
远程登录名字(来自identd,如提供的话)
%...m请求的方法
%...{Foobar}n:
来自另外一个模块的注解“Foobar”的内容
%...{Foobar}o:
Foobar的内容,应答的标头行
%...p:
服务器响应请求时使用的端口
%...P:
响应请求的子进程ID。
%...q查询字符串(如果存在查询字符串,则包含“?
”后面的部分;否则,它是一个空字符串。
)
%...r:
请求的第一行
%...s:
状态。
对于进行内部重定向的请求,这是指*原来*请求的状态。
如果用%...s,则是指后来的请求。
%...t:
以公共日志时间格式表示的时间(或称为标准英文格式)
%...{format}t:
以指定格式format表示的时间
%...T:
为响应请求而耗费的时间,以秒计
%...u:
远程用户(来自auth;如果返回状态(%s)是401则可能是伪造的)
%...U:
用户所请求的URL路径
%...v:
响应请求的服务器的ServerName
%...V:
依照UseCanonicalName设置得到的服务器名字
cache_store_lognone
#跟其他日志文件一样,Squid将最新的日志条目写到该文件的末尾。
某个给定的URI可能出现在日志文件里多次。
例如,它先被cache,然后删除,接着又cache住。
仅仅最近来的日志条目才反映目标的当前值。
Log_fqdn:
如Client有domainname的话,access.log便会把domainname完整的记录下来。
否则只记录IP位置,由于开启之后,squid需要访问DNS来解析客户的域名,会加重服务器负载,导致性能下降。
ftp_user:
假如需要使用anonymousftp来获取档案,会送出后面所接的字串当password。
Dns_children:
Squid本身附有一个dnsserver程序来处理Client端domainname的需求,一般来说,当proxy有较大的使用量时,dnschildren设定较多可以处理的domainnamerequest较多也较快,但当设定过多的dnsserver对系统的performance也会有相当的影响,可使用cachemanger来观看每个dnsserver的使用量决定数量的多少。
reference_age:
物件的LRU,若比值大的话便清除cache中的物件。
例如设定一星期,如一星期内没有存取动作,就把物件从cache中移出,假如值为零的话,物件会存放于cache中直到cacheswap上限。
Read_time:
当proxy与web连接后,经过read_time的时间接收不到web站传送资料便断线,有可能是remoteserver或是网络连接突然性的中断等因素。
Shutdown_lifetime:
当cacheserver收到SIGTERM或是SIGHUP时,squid会对使用端发出"shutdownpending"讯息,并关掉所有正在进行中的动作,直到squid重新启动。
Err_html_text:
使用者浏览网页中,常常遇到不存在或连线中断的网站,squid本身会回应一个errormessage至用户端,squid管理者可使用这个参数来改变回应至用户端的errormessage,来连接至管理者的homepage。
Deny_html_text:
若遇到accesscontrolfail的情况,回应一个accessfailmessage,squid本身提供一个简单的message,可利用此功能连接至homepage。
ipcache_size1024
#ip对应cache的大小为1024
ipcache_low95
ipcache_high95
fqdncache_size1024 域名全称cache的大小为1024(默认1024)
#禁止缓存
hierarchy_stoplistcgi-bin?
hierarchy_stoplist-i^bbbs:
\\?
aclQUERYurlpath_regex-icgi-bin\?
\.asp\.php\.jsp\.cgi
acldenysslurlpath_regex-i^bbbs:
\\
no_cachedenyQUERY
no_cachedenydenyssl
#上面几个就是说遇到URL中有包含cgi-bin和以bbbs:
\\开头的都不要缓存,
#还有asp、cgi、php等动态脚本也不要缓存,
#因为这些脚本通常都是动态更新的,这样数据不同步。
#还有bbbs:
//开通的不缓存是因为一般我们进行电子商务交易,
#例如银行付款等都是采用这个的,如果把信用卡号什么缓存那不是很危险。
例子:
aclLocaldst10.0.1.0/24
cachedenyLocal
目的位置为10.1.1.1---255所有位置的文件不写入缓存
aclHTMLurl_regex.html$
cachedenyHTML
拒绝将后缀名为HTML的写入缓存
aclXYZZYurl_regex^bbb:
//aaai.suckaaa/foo.html$
cachedenyXYZZY
拒绝某个网站的缓存
aclMorningtime08:
00-11:
00
cachedenyMorning
上午八点至十一点拒绝写入缓存
ACL的基本格式如下:
acl
或:
acl 列表名称 控制方式 控制目标
Eg:
列表ip位置从192.168.0.2到192.168.0.10的所有计算机
Acladvance192.168.0.2-192.168.0.20/32
*需要注意的是:
squid将使用allow-deny-allow-deny…..这样的顺序套用规则
例如,当一个用户访问代理服务器时,squid会顺序测试squid中定义的所有规则都不匹配时,squid会使用与最后一条相反的规则
aclcache_objecturlpath_regex-i\.jpg$\.png$\.htm\.html\.gif$\.swf$
no_cachedeny!
cache_object(不缓存以上未定义到格式的文件)
aclbmsDomaindstdomain.testaaa
no_cachedenybmsDomain(不缓存.testaaa下的所有文件)
不缓存200,404等错误页面
aclbadbbbbbb_status200301500-400-403
bbb_accessdenybadbbb
匹配包含数字的用户名
aclNumberInNnameident_regex[0-9]
允许对代理认证用户名使用正则表达式
aclAdminsproxy_auth_regex-i^admin
想要查看mgr信息,例如mgr:
info等,请先加上一下语句
acllocalhostsrc127.0.0.1/255.255.255.255
aclManagerprotocache_object
bbb_accessallowManagerlocalhost
想手动强行刷新:
acllocalhostsrc127.0.0.1/255.255.255.255
aclPurgemethodPURGE
bbb_accessallowPurgelocalhost
dns_children120
refresh_pattern的作用:
refresh_pattern指令间接的控制磁盘缓存。
它帮助squid决定,是否某个给定请求是cache命中,或作为cache丢失对待。
宽松的设置增加了你的cache命中率,但也增加了用户接收过时响应的机会。
另一方面,保守的设置,降低了cache命中率和过时响应。
refresh_pattern规则仅仅应用到没有明确过时期限的响应。
原始服务器能使用Expires头部,或者Cache-Control:
max-age指令来指定过时期限。
refresh_pattern语法如下:
refresh_pattern[-i]regexpminpercentmax[options]
例如:
refresh_pattern ^ftp:
1440 20% 10080
refresh_pattern ^gopher:
1440 0% 1440
refresh_pattern . 0 20% 4320
refresh_pattern -i\.gif$ 180 90% 1440 reload-into-imsignore-no-cache
refresh_pattern -i\.jpg$ 180 90% 1440 reload-into-imsignore-no-cache
refresh_pattern-i\.wmv$ 1440 90% 2880 reload-into-imsignore-no-cache
refresh_pattern -ibbb:
//xxx/jobs_nv/ajax_keywords.asp 144050%10080override-expireoverride-lastmodreload-into-imsignore-reloadignore-no-cacheignore-private(缓存动态文件,可以做到,但是个人认为没意义)
############################################################################################
开始时的编译安装:
./configure\
--prefix=/opt/squid\ 指定软件安装路径
--enable-delay-pools\ 支持流量控制
--enable-async-io=120\ 这个主要是设置async模式来运行squid,我的理解是设置用线程来运行squid,
如果服务器配置很不错,有1G以上内存,cpu使用SMP的方式的话可以考虑设成
160或者更高。
如果服务器比较糟糕就根据实际情况设了。
另外此项还另cache
文件支持aufs
--enable-auth=="basic"
--enable-basic-auth-helpers="NCSA"
以上两个是编译用户认证模块。
--enable-storeio=aufs,coss,diskd,ufs\让squid支持这些文件系统
--enable-useragent-log\允许解析的URL中出现下划先,因为默认squid会认为带下划线的URL位置是非法
的,并拒绝访问该位置
--enable-referer-log\该选项激活来自客户请求的bbbreferer日志
--enable-kill-parent-hack\ 关掉suqid的时候,要不要连同父进程一起关掉
--enable-forward-log\
--enable-snmp\ 此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测,因此必须
选择此项,使Squid支持SNMP接口
--enable-cache-digests\加快请求时,检索缓存内容的速度。
--enable-default-err-language=Simplify_Chinese\指定出错是显示的错误页面为简体中文
--enable-epoll\ 可以提升效能。
squid是单进程多路复用的,epoll的效率比select好得多.
--enable-removal-policies=heap,lru\ 可以使用GDSF或LFUDA策略。
对小文件,使用GDSF的cache选
择算法比默认的lru算法效率要高
--enable-large-cache-files\
--disable-internal-dns\squid源代码包含两个不同的DNS解决方案,叫做“内部的”和“外部的”。
内部查询是默认的,但某些人可能要使用外部技术。
该选项禁止内部功能,转
向使用旧的方式。
该工具的有利处之一是,squid获得准确无误的DNS响应的
TTLs。
--enable-x-accelerator-vary\该高级功能可能在squid被配置成加速器时使用。
它建议squid在响应请求
时,从后台原始服务器中寻找X-Accelerator-Vary头。
--enable-follow-x-forwarded-for\
--with-large-files\
--disable-ident-lookups\ 防止系统使用RFC931规定的身份识别方法
--enable-underscore\ 允许请求的URL出现下划线
--disable-arp-acl\可以在规则设置中直接通过客户端的M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- squid 配置 参数 一些 解释