设为首页 收藏本站
查看: 1615|回复: 0

[经验分享] 分享squid缓存服务器配置-之conf配置文件的详细介绍

[复制链接]

尚未签到

发表于 2018-12-28 10:16:13 | 显示全部楼层 |阅读模式
  此文章转自linxtone:http://bbs.linuxtone.org/thread-15681-1-1.html
  分享下自己测试squid缓存节点配置文件,如果有不足之处请大家多提意见。
  测试的版本已经完全支持http/1.1
  squid版本:
  Squid Cache: Version 3.1.5
  http_port 80 vhost                     #squid监听端口,vhost表示根据请求主机头来转发到后端WEB机器
  http_port 8080 vhost vport             #vport 虚拟主机的支持
  icp_port 0                             #提供从相邻的squid查询端口,如果不提供该服务,可一将端口改为0
  unique_hostname host100                 #防止cache主机名冲突
  dns_nameservers 192.168.1.100        #指定内部DNS服务器
  cache_replacement_policy heap LFUDA  #控制了squid的磁盘cache的置换策略(例如响应时间,命中率,字节命中率等),一般分为三类,我们只用了LFUDA
  memory_replacement_policy heap LFUDA #原理同上
  cache_dir aufs /data/cache/cache1 40960 16 256 max-size=204800    指定cache在硬盘上存放的路径,最大存储40G,16个一级目录,256个二级目录,如果不缓存任何文件可以指定
  null文件系统,max-size指定缓存文件最大值,默认以字节为单位。
  cache_dir aufs /data/cache/cache2 40960 16 256 max-size=204800
  logformat  cdn  %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %h" "%{User-Agent}>h" %Ss:%Sh    日志格式
  cache_log /data/cache/logs/cache.log      #squid启动和调试等信息
  access_log /data/cache/logs/access.log  cdn  #squid请求日志
  cache_store_log none                          #squid缓存日志,这里禁掉了(请求响应的细化记录,data,last-modified,expires头部值)
  cache_effective_user squid                    #squid对应系统管理用户
  cache_effective_group  squid                  #squid对应系统管理组
  tcp_recv_bufsize 65535 bytes                  #接受缓存大小,用来建立tcp socket
  logfile_rotate 4                              #日志轮训,保留最近得4份日志
  pid_filename /usr/local/squid/var/logs/squid.pid #squid进程pid路径
  cache_mem  2048 MB           #squid使用共享内存大小,一般设置为内存1/3左右
  cache_swap_low 85            #配合cache_mem使用,当达到百分之85后,就把旧的内容替换直到降到百分之85
  cache_swap_high 95
  maximum_object_size 4096 KB  #单个文件最大缓存大小
  maximum_object_size_in_memory 512 KB #单个文件在内存中最大缓存大小
  reply_body_max_size 5116 KB   #访问列表限制对HTTP响应主体的最大可接受值
  minimum_object_size 1 bytes  #单个文件最小缓存大小
  ipcache_size 65535           #DNS正反解所得到的IP存在缓存区的大小,这样可以加快解析速度
  fqdncache_size 65535         #DNS正反解所得到的域名存在缓存区的大小,这样可以加快解析速度
  request_header_max_size 5 KB  #限制http请求header头得大小,一般为512字节
  quick_abort_min 1 MB
  quick_abort_max 5 MB
  quick_abort_pct 80
  #控制squid是否继续传输被用户中断的请求,当用户中断请求时,squid把检测 quick_abort 的值。如果剩余部分小于“quick_abort_min”指定的值,squid 把继续完成剩余部分的传输;如果剩余部分大于“quick_abort_max”指定的值,squid 把终止剩余部分的传输;如果已完成“quick_abort_pct”指定的百分比,squid把继续完成剩余部分的传输。
  #keepalived
  client_persistent_connections off #因为现在的IE都是多线程,考虑到服务器带宽等网络资源消耗,所以长链接关闭
  server_persistent_connections on  #服务端长链接是用于在服务器端传递消息时使用已打开的socket链接以节省资源而设置的。
  request_timeout 2 minutes        #客户端请求超时时间
  persistent_request_timeout 1 minutes  #持续连接时间(建议和后端WEB服务器或者keepalive一致)
  read_ahead_gap 16 KB    #当从其他服务器取数据的时候,先发给客户端这样一个大小的检验。
  negative_ttl 0 minutes   #一个失败请求的存活时间
  negative_dns_ttl 0 minutes #缓存失败的DNS查询结果的生存时间
  positive_dns_ttl 10 minutes #缓存成功的DNS查询结果的生存时间
  range_offset_limit -1 KB   #预先现在用户请求的文件,设置一定要小于maximum_object_size的值,不然就会浪费很多带宽的,最好不要设置。
  client_lifetime 60 minutes  #客户端连接超时时间
  half_closed_clients off     #用户请求处于半关闭状态squid会保持这种状态,直到返回套接字的读写错误才将其关闭,这样会浪费系统资源;设置为off,有了这种状态立即关闭请求。
  pconn_timeout 100 seconds   #squid与其他服务器建立连接多久闲置时间关闭回话。
  shutdown_lifetime 20 seconds #当收到SIGTERM或者SIGHUP信号后,squid将进入一种shutdown pending的模式,等待所有活动的套接字关闭,如果过了这个值,就返回客户端超时。
  connect_timeout 1 minute     #连接超时时间
  #peer_connect_timeout 30 seconds #到父层或源站请求超时时间
  cache_mgr  admin@51cdn.com           #管理员联系方式
  httpd_suppress_version_string on     #隐藏服务器信息(比如一些页面拒绝访问,或出现循环)
  visible_hostname 51cdn.com      #可见主机名
  memory_pools on            #内存池设置为打开
  memory_pools_limit 64 MB   #设置内存池大小
  via off                    #检查squid请求路由的一个标志,当客户端请求到达第一个代理服务器时,该服务器会在自己发出的请求里面添加 Via 头部,并填上自己的相关信息,当下一个代理服务器 收到第一个代理服务器的请求时,会在自己发出的请求里面复制前一个代理服务器的请求的Via 头部,并把自己的相关信息加到后面,以此类推,当OCS收到最后一个代理服务器的请求时,检查 Via 头部,就知道该请求所经过的路由。
  forwarded_for on     #关闭此项将在访问某些论坛时显示的IP是代理服务器的IP,如果打开则显示是客户请求IP。
  store_avg_object_size 13 KB #平均对象大小,所有文件大小/文件数量在10-13KB之间,
  store_objects_per_bucket 256 #每个objects,存储对象都会有一个hash表,降低或者增加这个值,也能改善store的效率
  strip_query_terms off        #当改为on时在问号(?)之后的所有字节被删除,默认是开启的,这里我们关闭,就是能记录(?)后面的参数了。
  prefer_direct on           #默认squid先发请求到邻居cache,如果改为on,取源失败,邻居cache变为备份。
  coredump_dir /data/cache/logs  #squid突然挂掉的时候,或者突然出现什么故障的时候,将squid在内存中的资料写到硬盘中。
  ################Purge######################### PURGE 是另一个特殊的请求方法,Squid专有,不准许你RFC;可以让管理员强制刷新缓存,我这里限制只有在本地才能更新缓存
  acl mypurge src 127.0.0.1
  acl Purge method PURGE
  http_access allow mypurge  Purge
  http_access deny Purge
  #如下不缓存动态的内容
  hierarchy_stoplist cgi-bin ?
  hierarchy_stoplist -i ^https:\\ ?
  acl QUERY urlpath_regex -i cgi-bin \? \.php \.xml \.jsp \.js \.do
  acl denyssl urlpath_regex -i ^https:\\
  acl dy_cache urlpath_regex swf\?
  acl dy_cache urlpath_regex html\?
  acl dy_cache urlpath_regex htm\?
  acl dy_cache urlpath_regex exe\?
  acl dy_cache urlpath_regex css\?
  acl dy_cache urlpath_regex js\?
  acl dy_cache urlpath_regex cab\?
  acl dy_cache urlpath_regex asp\?
  acl dy_cache urlpath_regex aspx\?
  acl dy_cache urlpath_regex php\?
  acl dy_cache urlpath_regex jsp\?
  acl dy_page url_regex -i ^http:\/\/www1\.51cdn\.com\/.*\?.*$
  no_cache deny QUERY
  no_cache deny denyssl
  no_cache deny dy_cache
  no_cache deny dy_page
  acl www dstdomain .51cdn.com
  always_direct allow www
  http_access allow www
  ##############Refresh_pattern#################refresh防止客户端一直刷新照成cache回源确认,对此设置了缓存时间。间接的控制磁盘缓存,宽松的设置增加了cache的命中率,同样也增加了用户接受过时相应的几率; 保守的设置,降低了cache的命中率和过时响应。
  Refresh _pattern [-i] regexp min  percent  max  [Option]    min和max是分钟数
  refresh_pattern算法描述:
  1、如果响应年龄超过refresh_pattern 的max值,该响应过期;
  2、如果LM-factor 少于refresh_pattern 的percent的值。该响应存活
  3、如果响应年龄少于refresh_pattern 的min值,该响应存活
  4、其他情况,响应过期
  LM-factor算法描述:
  Resource age=对象进入cache的时间 – 对象的last_modified
  Response age= 当前时间 – 对象进入cache的时间
  LM-factor   =(response age)/(resource age )
  Refresh _pattern [-i] regexp min  percent  max  [Option]
  #override-expire:该选项导致squid在检查Expires头部之前,先检查min值。这样,一个非零的min时间让squid返回一个未确认的cache命中,即使该响应准备过期。
  #override-lastmod:改选项导致squid在检查LM-factor百分比之前先检查min值。
  #reload-into-ims:该选项让squid在确认请求里,以no-cache指令传送一个请求。也就是说squid在转发请求之前,对该请求增加一个If-Modified- Since头部。注意这点仅仅在目标有Last-Modified时间戳时才能工作。
  #ignore-reload:导致squid忽略请求里的任何no-cache指令,一旦缓存,就不删除,除非purge掉。

  refresh_pattern -i ^http:\/\/www1\.51cdn\.com\/.*\.(html|jpeg|bmp|png|gif|).*$  120 100%  240>
  refresh_pattern -i \/$ 15 90% 600>
  refresh_pattern -i \.html$ 15 90% 60>
  refresh_pattern -i \.htm$ 15 90% 600>
  refresh_pattern -i \.shtml$ 15 90% 600>
  refresh_pattern -i \.vhtml$ 30 90% 600>
  refresh_pattern -i \.hml$ 15 90% 600>
  refresh_pattern -i \.php$ 1440 90% 129600>
  refresh_pattern -i \.asp$ 15 90% 600>
  refresh_pattern -i \.jsp$ 1440 90% 8640>
  refresh_pattern -i \.gif$ 1440 90% 129600>
  refresh_pattern -i \.swf$ 1440 90% 129600>
  refresh_pattern -i \.jpg$ 1440 90% 129600>
  refresh_pattern -i \.png$ 1440 90% 129600>
  refresh_pattern -i \.bmp$ 1440 90% 129600>
  refresh_pattern -i \.js$ 120 90% 600>
  refresh_pattern -i \.css$ 120 90% 600>
  refresh_pattern -i \.wma 1440 90% 21600>
  refresh_pattern -i \.zip 1440 90% 21600>
  refresh_pattern -i \.mp3 1440 90% 21600>
  refresh_pattern -i \.rar 1440 90% 21600>
  refresh_pattern -i \.flv$ 1440 90% 21600>
  refresh_pattern -i \.wmv$ 1440 90% 21600>
  refresh_pattern -i \.exe$ 1440 90% 21600>  refresh_pattern .               0       20%     4320
  acl manager proto cache_object
  acl ownhost src 192.168.1.0/24
  acl localhost src 127.0.0.1/32
  acl to_localhost dst 127.0.0.0/8
  acl Safe_ports port 8080    # proxy
  acl Safe_ports port 80      # Web
  acl SSL_ports port  443     #https
  acl CONNECT method CONNECT
  http_access allow ownhost
  http_access allow manager localhost
  http_access deny manager
  http_access deny !Safe_ports
  http_access deny CONNECT !SSL_ports
  http_access deny all
  icp_access allow  all
  ##############http-header###############################header安全配置
  reply_header_access Via deny all
  reply_header_access Cache-Control deny all
  reply_header_access Server deny all
  reply_header_access X-Squid-Error deny all
  reply_header_access X-Forwarded-For deny all
  request_header_access Via deny all
  request_header_access Age deny all
  request_header_access X-Squid-Error deny all
  request_header_access Pragma deny all
  #request_header_access X-Forwarded-For deny all


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-656764-1-1.html 上篇帖子: 简单squid 缓存服务器配置 下篇帖子: squid 配置详解--里面有些acl比较有用--而且介绍了日志分析事项
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表