squid faq

1.部分编译选项说明
–disable-carp 禁止CARP
–enable-snmp 打开SNMP的支持,因为要收集squid的数据,命中率等。
–disable-internal-dns 禁止内部DNS,使用外部的~squid/libexec/dnserver。
–enable-async-io 使用异步I/O。
–with-large-files –enable-large-cache-files 支持>2G的文件。
–maxfd=8192 加大打开文件的数目,早期的版本需要在编译前运行ulimit -HSn 8192。
注意:关键是要写enable-epoll,其他会自动关闭的

2.其他人的编译选项,供参考

./configure --prefix=/usr/local/squid --disable-carp 
--enable-snmp --disable-internal-dns --enable-async-io --disable-kqueue 
--enable-storeio=diskd,null,ufs,aufs --disable-useragent-log 
--disable-referer-log --with-large-files 
--enable-large-cache-files --disable-wccp --with-pthreads 
--disable-ident-lookups --maxfd=8192

configure --prefix=/usr/local/squid --enable-dlmalloc --with-pthreads --enable-poll --disable-internal-dns --enable-stacktrace --enable-removal-policies="heap,lru" --enable-delay-pools --enable-storeio="aufs,coss,diskd,ufs"
--with-openssl=/usr/kerberos \


--enable-async-io=60 是使用异步i/o的选项

3.cache_mem配置过大报错问题
[root@localhost logs]# ../../sbin/squid 
2007/09/12 10:17:13| WARNING cache_mem is larger than total disk cache space!
2007/09/12 10:17:13| WARNING: Very large maximum_object_size_in_memory settings can have negative impact on performance

larger than total disk cache space,not larger  than total disk space...
一般将cache_mem设为物理内存的1/3,将cache_mem调节小点,squid进程才可以正常启动.
同时这个错误也和cache_dir的设置有关系


 
4.内存命中率问题 

cat /var/log/squid/access.log |grep TCP_MEM_HIT
192.168.1.246 - - [12/Sep/2007:11:10:12 +0800] "GET http://192.168.1.232/video/mp4/2007/08/08/cw044_01060_bd94.mp4 HTTP/1.1" 200 3152828 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6" TCP_MISS:FIRST_UP_PARENT
 
192.168.1.246 - - [12/Sep/2007:11:10:28 +0800] "GET http://192.168.1.232/video/mp4/2007/08/08/cw044_01060_bd94.mp4 HTTP/1.1" 200 3152838 "-" "Opera/9.22 (Windows NT 5.1; U; en)" TCP_MEM_HIT:NONE


如果看到很多的TCP_MEM_HIT ,这表明该文件是从内存缓存读取的,squid已经起作用了!你再用浏览器打开该文件,应该是快如闪电了。。呵呵,大功告成了!还有其他类型的HIT,如 TCP_HIT等等,这些是从磁盘读取的,我觉得加速的意义不大,只不过缓解了apache的压力而已。

备注:用/opt/squid/sbin/squid -s启动后稍等下就有TCP_MEM_HIT内存命中了,实在不行可以用 /opt/squid/sbin/squid -k reconfigure
命令试试

扫描二维码关注公众号,回复: 11340815 查看本文章

5.缓存需要认证的web服务器配置
如果是 login=PASS就需要每次都要认证。
如果是 login=username:password 就只第一次需要认证了。
refresh_pattern ignore-private这个我没改。
后来才发现,需要加速的内容有如下
   <META HTTP-EQUIV="Cache-Control" content="no-cache">
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
所以才没被加速。
如果修改为如下内容就可以加速。
    <META HTTP-EQUIV="Cache-Control" content="cache">
    <META HTTP-EQUIV="Pragma" CONTENT="cache">
谢谢斑竹及各位!谢谢!

6.apache log要真实ip超简单,x-forward

7.禁止访问favicon.ico
#acl favicon urlpath_regex -i favicon\.ico
#http_access deny favicon
禁止访问指定类型以外的文件及目录
acl favicon urlpath_regex -i \.jpeg$ \.jpg$ \.png$ \.amr$ \.mid$ \.mmf$ \.mp3$ \.3gp$ \.avi$ \.mp4$ \.mpeg$\.rm$ \.wmv$
http_access deny !favicon

8.查看缓存命中率
acl Manager proto cache_object
acl Localhost src 127.0.0.1 192.168.1.232
http_access allow Manager Localhost 
http_access deny Manager 

/opt/squid/bin/squidclient -p 80 -h localhost mgr:info

9.根据日志查看命中率。
#more /usr/local/squid/var/logs/access.log | grep TCP_MEM_HIT
该指令可以看到在squid运行过程中,有那些文件被squid缓存到内存中,并返回给访问用户。
#more /usr/local/squid/var/logs/access.log | grep TCP_HIT
该指令可以看到在squid运行过程中,有那些文件被squid缓存到cache目录中,并返回给访问用户。
#more /usr/local/squid/var/logs/access.log | grep TCP_MISS
该指令可以看到在squid运行过程中,有那些文件没有被squid缓存,而是现重原始服务器获取并返回给访问用户。

10.squid删除特定的缓存方法

如果web的端口为88
squidclient -p 80 -m purge http://www.uknet.cn:88
squidclient -p 80 -m purge http://www.uknet.cn:88/index.shtml
URL是区分大小写的。


还要在squid.conf里面加上这个
acl PURGE method PURGE
acl localhost src 127.0.0.1
http_access allow PURGE localhost
http_access deny PURGE

否则不能用purge方法


11.只允许天涯的referer或则是无referer 都可以正常访问

#防止天涯盗链,转嫁给百度
acl tianya referer_regex -i tianya
http_access deny tianya
deny_info  tianya
这是拒绝了天涯的refere过来的连接

我想建立一条规则,只允许天涯的referer或则是无referer 都可以正常访问,不允许别的域名referer过来的访问。
这个规则该怎么写?


那也可以的啊。

acl tianya referer_regex -i tianya
http_access allow tianya

acl nullref referer_regex -i ^$
http_access allow nullref

acl hasref referer_regex -i .+
http_access deny hasref 
deny_info http://www.baidu.com/logs.gif hasref


12.设置防图片盗链,其中aaa和bbb分别是虚拟主机的域名,referer中必须包含有aaa或者bbb的域名才能访问图片
#acl picurl url_regex -i \.bmp$ \.png$ \.jpg$ \.gif$ \.jpeg$
#acl mystie1 referer_regex -i aaa
#http_access allow mystie1 picurl
#acl mystie2 referer_regex -i bbb
#http_access allow mystie2 picurl

13.Squid不记录部分内容css,js,图片的日志的方法


acl nolog urlpath_regex -i \.css \.js \.swf
access_log /var/log/squid/access.log common !nolog

acl nolog urlpath_regex \.gif \.jpg \.css \.js \.swf \.GIF \.JPG \.SWF
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
access_log /usr/local/squid/var/logs/page_zs_access_log combined !nolog

14.squid针对不同浏览器有多个copy的问题解决了,加个配置:

cache_vary off

不增加该配置,同一个文件对于多个浏览器有有多个文件缓存


tcp_outgoing_address 1.1.1.1

http_port 3081

15. AGE 1
如何自定义squid 加速后http age header
偶尔发现国内的CDN加速以后,max-age都为1一直不变,很是奇怪为什么这样做?能带来什么好处?

squid.conf 添加如下:
[color=Blue]header_access Age deny all
header_replace Age 1

//这样做的好处:
1.让client正常遵守源站的过期设置
2、可以很好的利用浏览器的缓存设置
3、可以减少很多304的请求
减少304请求的话 又有两个方面的好处 对于你们来讲的话 可以减少一定的带宽;
对于服务器端,减少了很多304的响应,可以一定程度提高机器性能

猜你喜欢

转载自blog.csdn.net/weixin_44019506/article/details/106277515
FAQ