<!--@page { margin: 2cm }P { margin-bottom: 0.21cm }TD P { margin-bottom: 0cm }A:link { so-language: zxx }-->
前言:
公司最近要把图片缓存到 web 中,提高网站的访问效率,让本人研究下 squid 。查了一天也走了不少弯路。
首先给大家提个醒, squid2.5 之前和之后的配置相差很远,网上的 squid 资料, 2.5 之前占大部分,本人就吃了这亏。
squid 的权威指南见: http://home.arcor.de/pangj/squid/chap02.html 。个人感觉太罗嗦。本文简要介绍下 。
squid 简介
Squid 是一种代理服务器,它实现了对 HTTP 、 FTP 和 Gopher 协议的缓存。 Squid 能够使用访问控制列表( Access Control List , ACL )来允许或拒绝访问。 Squid 具备强大的可配置能力以及鲁棒性,而且用户会发现,该软件非常容易学习。更好的是,可将 Squid 配置为透明代理,即好像用户根本不知道有 Squid 一样。
squid 配置
squid 的在应用系统的中的架构见: http://www.ibm.com/developerworks/cn/linux/l-cn-squid/ 。基本 配置如下:
1 、安装
写道
wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE13.tar.gz
tar zxvf squid-3.0.STABLE13.tar.gz
cd squid-3.0.STABLE13
./configure –prefix=/squid –disable-carp –with-aufs-threads=32 –with-pthreads –enable-storeio=’ufs,aufs,null’ –enable-disk-io=’AIO,Blocking’ –enable-removal-policies=’heap,lru’ –disable-wccp –enable-kill-parent-hack –disable-snmp –disable-poll –disable-select –enable-auth=basic –with-aio –disable-ident-lookup –with-filedescriptors=65536
或
写道
./configure –prefix=/squid –disable-carp –with-aufs-threads=32 –with-pthreads –enable-storeio=’ufs,aufs,null’ –enable-disk-io=’AIO,Blocking’ –enable-removal-policies=’heap,lru’ –disable-wccp –enable-kill-parent-hack –disable-snmp –disable-poll –disable-select –enable-auth=basic –with-aio –disable-ident-lookup –with-filedescriptors=65536 –disable-internal-dns –enable-err-language=”Simplify_Chinese” –enable-default-err-languages=”Simplify_Chinese”
make
makeinstall
这样就安装完成。
在 ubuntu 下还个简单的办法 , 如下:
写道
./configure –prefix=/squid –disable-carp –with-aufs-threads=32 –with-pthreads –enable-storeio=’ufs,aufs,null’ –enable-disk-io=’AIO,Blocking’ –enable-removal-policies=’heap,lru’ –disable-wccp –enable-kill-parent-hack –disable-snmp –disable-poll –disable-select –enable-auth=basic –with-aio –disable-ident-lookup –with-filedescriptors=65536 –disable-internal-dns –enable-err-language=”Simplify_Chinese” –enable-default-err-languages=”Simplify_Chinese”
2 、配置
squid 的缓存主要是靠 squid.conf 文件, ubuntu 安装方式时,该文件在 /etc/squid/squid.conf (本人是通过 ubuntu 自动安装的,如果不知道文件在哪,可以通过命令 sudo/ -name squid.conf 查找)。
配置如下:
http_port80 选项 http_port 指定 squid 监听 HTTP 请求的端口,一般都设置成 80 端口,这样使用户感觉不到反向代理的存在,就像访问真正的 WEB 服务器一样。
cache_mem 128 MB 共享内存大小 (squid 在提供服务的时候所使用的内存 )
maximum_object_size_in_memory 512 KB 最大内存缓存 OBJECT 值 ~ 如果超过则不再内存中缓存 ~ 而存入 IO 中!
memory_replacement_policylru 替换机制 (lru 叫做 最近不常用的单元 unit 一般就是常说的 object 也就是当 cache 中的内容比如内存或硬盘达到上限时的 那么就需要进行数据的换进和换出工作 )
cache_dir null /tmp cache_dir 存储 cache 内容也就是 object 的物理存放点
cache_dir ufs /tmp1 10000 16 256 (/tmp size L1L2)
100G其中1层目录 16 个 并且每个1层目录下又有 256 个 2 层目录[或者说子目录] # 磁盘缓存的类型和目录,大小,一二级目录的设置,这里磁盘缓存大小是 10G ufs 是一种文件存储方式 因为 os 一般都是从内存获取数据 那么内存的东西必须最后写的硬盘上~ sync 同步的时候用的 ufs 那么 squid 也是一样 ufs 一般是同时写入内存和硬盘
注意: size 是按照M为单位的也就这个目录中最大存储容量的上限
max_open_disk_fds 0
minimum_object_size 0 KB
maximum_object_size 4096 KB
logformatsquid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un%Sh/%<A %mt设置 access_log 中日志存储的格式~
access_log /usr/local/squid3/var/logs/access.logsquidaccess_log为客户端请求的日志 cache_log/usr/local/squid3/var/logs/cache.log 为 squid 自身的运行日志
pid_filename/usr/local/squid3/var/logs/squid.pid 此三项是设置 PID 和日志文件位置
cache_store_log none 不记录 store.log
visible_hostname liuyu.blog.iyunv.com
liuyu.blog.iyunv.com 只是标签 有利于检查是否你的那台设备在提供服务!
cache_peer 192.168.1.53 parent 80 0 no-query round-robinmax-conn=32 originserver
squid2.5以上都是用的 cache_peer 来指定所需要代理的服务器的 IP 这一点很重要!由于本例 squid 与 web 不在同一服务器,因此需要 cache_peer 指定相应 WEB 服务器 IP
acl all src 0.0.0.0/0.0.0.0
acl QUERY urlpath_regex cgi-bin .php .cgi .avi .wmv .rm .ram .mpg.mpeg .zip .exe
cache deny QUERY
cache_effective_user squid
cache_effective_group squid
在这里我所以的日志都记录在: /usr/local/squid3/var/logs 里给目录相应的权限
chmod 666 -R /usr/local/squid3/var/logs
chown squid:squid -R /usr/local/squid3/var/logs
3. 测试配置是否正确
# /usr/local/squid2/sbin/squid -k parse
4. 启动 squid
/usr/local/squid3/sbin/squid -Nd1
ps aux |grep squid 查看是否启动
5 、默认的日志文件
默认的日志文件在 /var/log/squid 目录下。
常见错误:
写道
GET /default.aspx?n=1641570119&wa=wsignin1.0 HTTP/1.1
Accept: */*
Accept-Language: en-gb
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; T312461;
Q312461; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)
Host: mail.live.com
Connection: Keep-Alive
Cookie: MUID=9B7E2A9D963B4134BA0678B2B1153D98;
wlidperf=throughput=4&latency=828&FR=L&ST=1232423228769;
ck-9C1EBE25BAD77817=633679144877238362;
mktstate=S=-1074279018&U=&E=&P=&B=en-gb; mkt1=norm=en-gb;
BS=Downlevel=0&WinIEOnly=1&MSIEVersion=7.0&Win=1&Firefox=0&Safari=0;
s_cc=true; s_sq=%5B%5BB%5D%5D; PPLState=1;
RPSTAuth=EwDYARAnAAAUWkziSC7RbDJKS1VkhugDegv7L0eAAPpQcMejHliaDG697ETIGNF092E+hI17nqANeWUKniIvQ3a+Kbcd2NfmA698k6fKaHuuUtbvMh39zLTlwfAnP83i2JUK7SUvjWiz/asVor9uNJgQLmn66puXXpHygtDMp11A+XffRYVOCffUxFbPZL0aeziyE9qbcgxgwOrhteqSA2YAAAhp5sm6Ay+n5CgBSv0PpIfGjbo0w/YcClwtUZpKbESj8/dFAg7+89Z5Eik4jAVYrKNC59PJVQ3gky4YIYkqebcsaxMG/6/1WHLvkzF5Hg2ofRhyXqb/3Ng9/VaJEE2ilUYY9lt0dFMyHxN/FKkZ0LtXttrqXOhSlbD/wV9MRXWlXlVGlYruUMDk8r6WFOk9D9d+4iA4d8MfnwZKtosB179Ei5rUyjjtzrN0FLj1JNbmthvXcc6emmErkuXI1oB7Fe+bAXxrodjNhQF/KerZnsL53aPzhjYeQd+cqWsjP0jb/kdyQh/8G4Jxc24028VzyMJr0+UwHQEguDPVDBUgg1VCmncxnDYoaAVZJM5mD/idEBty9g+Q2m8IGJt0H/SMzYidmkF0m8UVlGuL8fck44IuGG4/AQ==;
MSPAuth=2SWsFvYtEG6k*VyvI3RpzLQsBX9MCLto*fqeinnn8*tB0h2k4aZpg3RVwuqznOYkrwvI7Nt5WhbUmRc!jP!IWOO9wNNwseR6nGuEyWsyaqC9hFnU5jVo7xvISiPk0CHArH;
MSPProf=2jXqBY6NQAzxmnVtZm8HVBDY!8ubW6PmTIcRgPWzQj1yAHoxt7VJICQOEXKtU4A7fT9*M42DrCq*VwUdVU2QyFYSbPIDuG1C!sVs0PT!cI4xNo0AgyICd1ZAMGI25V*4TbVATwEBiVX*OcEvpRKdDz75hEvalmjaZluPjYwtTv1yLCNYbB4F9hOA$$;
MSNPPAuth=B00lNX5L7rOnG8IiwCjkcNn3piUilxvIyqSisF6g3sUZWy8Uv*Ax*Dar4Yw2f0bxAyRDZC8VZAwrwBskv29Ebr3wLsi!ysq1856MH3i5EbX4F4sAuw347I9JcPPOp2jgo44vEHgAOih1QM5BVrUgLhqQmm4p3L2ogDZUmTNbHpEiLTigq9!fMA5tiOKp0uZjfRlTTBwWI0JySq5eYLjqZJcOEzfs1adxqZjf1YTtGPlkBY!Cpv4cuUmzNIBcpFwaKLpwBuxDbuCIuZq20qJ2wvEYlnIausAEu6mkXw7j2mjJxa3qleOuWhex*uQAxgsaPBz4OrEPfb8P!GfsVA4DOY92RSGdMJHJDD!9!EqfNYrWrwxSJ1N*dGlwwW6akw*SAwwQ44o1b8BciMWMHzvv4XJfha0*d0fJValQt18Jeah*ZL3Nq3gP!fJMsdlInjIYXADHsuzd6cZmVqYBkpKzNPZMlRZN;
MH=MSFT;
NAP=V=1.8&E=790&C=WeZsW1EOBJSAx8AaN4peWrC47gOFvtZWVGU069nvrAXoeXZPRTX27g&W=1;
ANON=A=208E92978701E5887161FB82FFFFFFFF&E=7ea&W=1
The following error was encountered:
Invalid Request
Some aspect of the HTTP Request is invalid. Possible problems:
Missing or unknown request method
Missing URL
Missing HTTP Identifier (HTTP/1.0)
Request is too large
Content-Length missing for POST or PUT requests
Illegal character in hostname; underscores are not allowed
The squid cache log shows:
2009/01/20 10:44:33| clientTryParseRequest: FD 28 (192.168.0.102:2596)
Invalid Request
2009/01/20 10:44:33| clientTryParseRequest: FD 21 (192.168.0.102:2627)
Invalid Request
2009/01/20 10:44:33| clientTryParseRequest: FD 54 (192.168.0.102:2597)
Invalid Request
2009/01/20 10:44:34| clientTryParseRequest: FD 13 (192.168.0.149:3032)
Invalid Request
2009/01/20 10:44:34| clientTryParseRequest: FD 51 (192.168.0.102:2608)
Invalid Request
解决该问题的办法是:
http_port80 transparent 加上这个transparent
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com