Squid(安装配置)
<!--@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?
?? ? 或
?写道./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.51cto.com??
?? ? ?liuyu.blog.51cto.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?
?
?? ?解决该问题的办法是:
?? ?http_port80??transparent 加上这个transparent?
?
?
?
?
?? ? ? ?
?
?
?
?
?
?