察看命中率的shell cat access.log|gawk '{print $4}'|sort|uniq -c|sort -nr 重点观察下面三个内容 TCP_MEM_HIT TCP_IMS_HIT TCP_REFRESH_HIT 1198559749.083 0 60.4.218.18 TCP_REFRESH_HIT/200 271 GET http://msg.ppstream.com/msg/msg.dat - FIRST_UP_PARENT/d text/html 1198559813.186 1 218.106.61.11 TCP_IMS_HIT/304 233 GET http://msg.ppstream.com/test.html - NONE/- text/html 1198559829.358 0 218.106.61.11 TCP_IMS_HIT/304 224 GET http://msg.ppstream.com/msg/msg.dat - NONE/- text/html TCP_IMS_HIT:NONE 客户端发送确认请求,Squid发现更近来的、新鲜的请求资源的拷贝。 Squid发送更新的内容到客户端,而不联系原始服务器。(这指明Squid对本次请求,不会与任何其他服务器(邻居或原始服务器)通信。) TCP_MEM_HIT:NONE 类似 TCP_IMS_HIT:NONE, 从内存中响应 TCP_REFRESH_HIT:FIRST_UP_PARENT/d Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。
Browsing the archives for the Squid tag
刚安装的squid,但在用squidclient清除缓存的时候,提示错误: freebsd# ./squidclient -m PURGE -p 80 http://www.testsquid.com/index.html HTTP/1.1 501 Method Not Implemented Date: Tue, 28 Jun 2011 23:03:22 GMT Server: Apache/2.2.19 (FreeBSD) mod_ssl/2.2.19 OpenSSL/0.9.8k DAV/2 Allow: GET,HEAD,POST,OPTIONS,TRACE Content-Length: 217 Connection: close Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>501 Method Not Implemented</title> </head><body> <h1>Method Not Implemented</h1> <p>PURGE to /index.html not supported.<br [...]
http_port 8000 vhost # Squid 服务器监听本机 8000 端口,vhost 支持虚拟主机。 cache_peer 192.168.1.50 parent 81 0 no-query originserver weight=1 name=a cache_peer 192.168.1.50 parent 82 0 no-query originserver weight=1 name=b cache_peer 192.168.1.51 parent 80 0 no-query originserver weight=1 name=c cache_peer_domain a www.serverA1.com cache_peer_domain b www.serverA2.com cache_peer_domain c www.serverB.com #以上六行配置,让 Squid 服务器知道: #从客户端过来的请求,如果是 www.serverA1.com,则 Squid 向 ServerA 192.168.1.50 的端口 [...]
分享下自己测试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 [...]
squid默认拒绝所有访问客户机的请求。 acl格式: acl 列表名称 列表类型 -i 列表值 列表名称:给acl随意起得的名称。 列表类型:常用的 src 源IP地址(客户机IP) dst 目的IP地址(服务器IP地址) srcdomain 源名称(客户机所属的域) dstdomain 目标名称(服务器所属域) time 一天中的时刻和一周中的一天 url_regex URL规则表达式 urlpath_regex: 略去协议和主机名的URL规则表达式 proxy_auth 通过外部程序进行用户认证 maxconn 单一IP的最大连接数 -i:表示忽略列表值得大小写,否则squid是区分大小写的。
本文链接: http://www.php-oa.com/2008/01/15/squid-se.html 使用squid的网站 #curl -I www.php-oa.com HTTP/1.0 200 OK Date: Tue, 15 Jan 2008 03:45:29 GMT Server: Apache X-Pingback: http://www.php-oa.com/xmlrpc.php Content-Type: text/html; charset=UTF-8 X-Cache: MISS from cnc.onezone.com X-Cache-Lookup: MISS from cnc.onezone.com:80 Via: 1.0 cnc.onezone.com:80 (squid/2.6.STABLE6) Connection: close 正常的没有使用squid的。
acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY 这段代码会不cache 所有带 cgi-bin 和 ? 的url path.表面看来,如果url 里面不带?还是可以被缓存的。可惜实际并非如此,squid 会根据header读取httpd的声明信息,例如生成时间等信息;实际上.php的页面不返回 last-modified 信息,因此很难被cache。 通过增加 php 的last-modified header强制 squid 的cache功能: header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header要放在所有.php文件中去。换而言之,就是要 1. 在 include.php中,构造一个当前时间转换为最近那次5分钟/n分钟划分的时间函数 2. 把这个时间函数的结果返回到 header 3. 在所有页面中调用这个 include 以上方法本人已经测试通过. 分别是加last-modified前台的日志 ============================ 由于网站的访问量越来越大,用户播放视频,都要从web服务器拿文件,而且又是动态连接,要调用一个php-cgi进程,这样的话很浪费资源,所以要加缓存服务器。但是问题来了,squid 默认是不缓存动态页面的,google 了半天,发现很多人的文章没有一个说到正点上的。最后自己不停的做测试,看squid.conf.documented,把问题解决了,所以就记录下来,以便以后大家遇到同样的问题。好解决。 列子: http://www.nginxs.com/nginx/Grec.php?id=eric&b.php?=aaa 首选用 [...]
一台web服务器,上面有好几个虚拟主机,近日装上Squid 2.6进行WEB加速,Squid 和Apache均在同一台服务器上面,效果非常明显 主机配置为: CPU: 至强2.8G 内存: 1GB RAM 下载: wget http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE6.tar.bz2 tar jxvf squid-2.6.STABLE6.tar.bz2 ./configure –prefix=/usr/local/squid --with-maxfd=65536 这个--with-maxfd参数是增大squid文件描述符到65536 安装完毕后开始配置/usr/local/squid/etc/squid.conf CODE: visible_hostname www.yoursite.com http_port xx.xx.xx.xx:80 vhost vport #xx.xx.xx.xx为这台服务器的IP地址
4.4 日志文件路径 我将在第13章讨论所有squid的日志细节。你现在你关注的唯一事情是,squid将它的日志放在何处。默认的日志目录是squid安装位置下的logs目录。例如,假如你在./configure时没有使用--prefix=选项,那么默认的日志文件路径是/usr/local/squid/var/logs. 你必须确认日志文件所存放的磁盘位置空间足够。在squid写日志时如果接受到错误,它会退出和重启。该行为的主要理由应引起你的注意。squid想确认你不会丢失任何重要的日志信息,特别是你的系统被滥用或者被攻击时。 squid有三个主要的日志文件:cache.log,access.log,store.log.第一个文件即cache.log,包含状态性的和调试性的消息。当你刚开始运行squid时,你应密切的关注该文件。假如squid拒绝运行,理由也许会出现在cache.log文件的结尾处。在正常条件下,该文件不会变得很大。也请注意,假如你以-s选项来运行squid,重要的cache.log消息也可被送到你的syslog进程。通过使用cache_log指令,你可以改变该日志文件的路径: cache_log /squid/logs/cache.log access.log文件包含了对squid发起的每个客户请求的单一行。每行平均约150个字节。也就是说,在接受一百万条客户请求后,它的体积约是150M。请使用cache_access_log指令来改变该日志文件的路径:
以下文章,虽然在FreeBSD下安装,linux下的安装方法类似.只是一些命令如fetch=>wget变更一下即可. 如何您是在FreeBSD下用ports来安装的话,前两步基本可以省略,默许的安装路径为/usr/local/sbin/squid,配置目录为/usr/local/etc/squid。 此版本好像有漏洞,安装时请使用最新的稳定版本: http://www.cnbeta.com/articles/121237.htm 一、编译安装 #fetch http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE25.tar.gz #tar zxvf squid-3.0.STABLE25.tar.gz //稳定版 #cd squid-3.0.STABLE25 #./configure --prefix=/usr/local/squid \ --enable-arp-acl \ --enable-linux-netfilter \ --enable-pthreads \ --enable-err-language="Simplify_Chinese" \ --enable-default-err-language="Simplify_Chinese" \ --enable-underscores \ --disable-internal-dns \ --enable-pf-transparent \ --enable-referer-log #make #make install 注:--enable-internal-dns 做多个网站反向代理时使用,允许使用内部dns,也可改/etc/hosts. 也可以通过ports来安装 # cd /usr/ports/www/squid #make install clean 这此用户组名squid将自动产生,无需手动创建 ==================================================== 二、初始化 #Linux命令 #adduser squid #addgroup squid #//freebsd命令 #pw groupadd squid [...]