上一篇主要讲述了squid在linux下的安装以及安装和运行的时候遇到的一些问题,这篇文章主要就是讲squid的配置啦。 废话不多说,下面是我完整的squid透明代理(反向代理)配置文件示例啦。里面有详细的解释。
squid的配置文件保存在/opt/squid/etc/squid.conf文件中。
#可见主机名,就是给squid服务器个名分,要不然它会闹事的~ visible_hostname squid.sourcejoy.com #服务器管理员邮箱,这个很酷,SQUID报错页面就会显示这个邮箱,嘿嘿~ cache_mgr yuhai@mail.gasoft #指定squid监听端口,可以指定监听多个端口 #第一行的80 后面多出个vhost,这个东西是为了让squid作为透明代理的,有了它,SQUID就能挡在web server前面了。 http_port 80 vhost http_port 3128
#SQUID可以使用的最大内存值,一般设为系统内存的1/3,最好不要超过2G,超过了会不稳定 cache_mem 2048 MB
#可以缓存的最大文件的大小,一般做优化需要用到 maximum_object_size 10000 KB #可以在内存中缓存的最大文件的大小,一般做优化需要用到 maximum_object_size_in_memory 2048 KB #缓存目录设置,是SQUID最重要的参数之一,它告诉squid以何种方式存储cache文件到磁盘的什么位置 #参数 ufs 为存储方式 后面是存储路径,接下来是此目录下存储的文件总大小上限(单位为M) #16表示此目录的下级子目录数量,256指再下级子目录数量 cache_dir ufs /opt/squid/var/cache 50000 16 256
#SQUID的访问日志内容保存格式是否模拟apache格式 emulate_httpd_log off #定义日志格式 #语法为:logformat 格式名称 格式内容 logformat combined %>a %ui %un [%tl] “%rm %ru HTTP/%rv” %>Hs %<st “%{Referer}>h” “%{User-Agent}>h” %Ss:%Sh #定义access请求日志路径 和使用的语法格式 access_log /opt/squid/var/logs/access.log combined #store日志,和access_log用法一样,这里选择了不记录 cache_store_log none
#接下来就是一堆ACL配置 #ACL语法:acl 列表名称 acl类型 控制目标 #acl类型可选值: # src : 源地址 (即客户机IP地址) dst : 目标地址 (即服务器IP地址)srcdomain : 源名称 (即客户机名称)dstdomain : 目标名称 (即服务器名称) # time : 一天中的时刻和一周内的一天 url_regex : URL 规则表达式匹配 urlpath_regex: URL-path 规则表达式匹配,略去协议和主机名 # proxy_auth : 通过外部程序进行用户验证 maxconn : 单一 IP 的最大连接数
#下面定义了一个要操作的域名列表 #把下面这些域名指向当前SQUID服务器,则SQUID则根据后续规则进行处理 acl squid_api dstdomain api.sourcejoy.com acl squid_web dstdomain web.sourcejoy.com info.sourcejoy.com kk.sina.com.cn acl squid_test dstdomain test.sourcejoy.com #squid self filter acl squid_sj dstdomain squid.sourcejoy.com
#cache_peer 段 #语法:cache_peer hostname type http_port icp_port options #type:指明hostname的类型,是同级子代理服务器还是父代理服务器,也即parent(父) 还是 sibling(子); #父邻居能为子cache转发丢失的Cache,而子邻居不可能 #http_port指hostname的监听端口,icp_port指hostname上的ICP监听端口,对于不支持ICP协议的可指定0 #options:可以包含一个或多个关键字 #no-query:不向该peer发送ICP请求 #login=user:password:当你的父代理服务器要求用户认证时可以使用该选项来进行认证。 #originserver 表示此parent作为源服务器连接。当此服务器是web服务器时,SQUID用于缓存加速服务器。 cache_peer 192.168.0.201 parent 80 0 no-query originserver # squid自身的HTTP访问 cache_peer 192.168.1.200 parent 9528 0 no-query originserver cache_peer_access 192.168.0.200 deny !squid_sj cache_peer_access 192.168.0.201 deny !squid_api cache_peer_access 192.168.0.202 deny !squid_web !squid_test
#不缓存某些规则的url acl integrity url_regex -i .+/integrity/.+\.htm(l)?$ cache deny integrity acl no_cache_file urlpath_regex \.(xml|jpg|gif|png|bmp|js|css|swf|wsdl)$ cache deny no_cache_file
#设置同一IP最大连接数 acl OverConnLimit maxconn 200 http_access deny OverConnLimit
#缓存过期规则匹配 #只对后端没设置Expires过期时间的页面起作用而对类似apache mod_expires 设置过的页面不起作用 #语法:refresh_pattern [-i] regexp min percent max [options] #概念:LM就是页面Header里时间(Date)和Last-Modified时间的差。Date一般是Squid从后面取页面的时间,Last-Modified 一般是页面生成时间 #min, max的单位是分钟 #如果LM<min 使用缓存,如果LM<(min + (max – min)*percent) 使用缓存 #加上ignore-reload选项,忽略请求里的no-cache指令,直到被主动purge掉为止 # article page refresh_pattern -i .+/article/.+\.htm(l)?$ 43200 100% 1440 ignore-reload # channel list page refresh_pattern -i .+/(channel|list)/.+\.htm(l)?$ 120 100% 120 ignore-reload # index page old 60 refresh_pattern -i www\.sourcejoy\.com/(index\.html)?$ 1440 100% 1440 ignore-reload
以上配置全部讲解完啦。大家把以上详细配置示例整理修改一下,就可以作为自己的反响代理缓存服务器啦。
-END-