zoukankan      html  css  js  c++  java
  • 分享下自己测试squid缓存节点配置文

    分享下自己测试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 reload-into-ims 
    refresh_pattern -i /$ 15 90% 600 reload-into-ims
    refresh_pattern -i .html$ 15 90% 60 reload-into-ims
    refresh_pattern -i .htm$ 15 90% 600 reload-into-ims
    refresh_pattern -i .shtml$ 15 90% 600 reload-into-ims
    refresh_pattern -i .vhtml$ 30 90% 600 reload-into-ims
    refresh_pattern -i .hml$ 15 90% 600 reload-into-ims
    refresh_pattern -i .php$ 1440 90% 129600 reload-into-ims
    refresh_pattern -i .asp$ 15 90% 600 reload-into-ims
    refresh_pattern -i .jsp$ 1440 90% 8640 reload-into-ims
    refresh_pattern -i .gif$ 1440 90% 129600 reload-into-ims
    refresh_pattern -i .swf$ 1440 90% 129600 reload-into-ims
    refresh_pattern -i .jpg$ 1440 90% 129600 reload-into-ims
    refresh_pattern -i .png$ 1440 90% 129600 reload-into-ims
    refresh_pattern -i .bmp$ 1440 90% 129600 reload-into-ims
    refresh_pattern -i .js$ 120 90% 600 reload-into-ims
    refresh_pattern -i .css$ 120 90% 600 reload-into-ims
    refresh_pattern -i .wma 1440 90% 21600 reload-into-ims
    refresh_pattern -i .zip 1440 90% 21600 reload-into-ims
    refresh_pattern -i .mp3 1440 90% 21600 reload-into-ims
    refresh_pattern -i .rar 1440 90% 21600 reload-into-ims
    refresh_pattern -i .flv$ 1440 90% 21600 reload-into-ims
    refresh_pattern -i .wmv$ 1440 90% 21600 reload-into-ims
    refresh_pattern -i .exe$ 1440 90% 21600 reload-into-ims
    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

  • 相关阅读:
    Windows下Rails2.0.2最简安装教程
    xmpp with openfire之三 openfire扩展小试 整合现有系统用户
    母亲的电话
    郁闷……
    博弈
    长春下雪了
    监考
    sql把逗号分隔的字符串拆成临时表
    SQL语句使用大全。
    Left Join、Right Join、Inner Join的区别
  • 原文地址:https://www.cnblogs.com/youlechang123/p/2631165.html
Copyright © 2011-2022 走看看