Squid的Linux下安装配置笔记(下)
上一篇主要讲述了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
以上配置全部讲解完啦。大家把以上详细配置示例整理修改一下,就可以作为自己的反响代理缓存服务器啦。
建议继续学习:
- 使用Squid缓存视频 (阅读:9179)
- 系统架构的一些思考 (阅读:5615)
- [调优] Squid 不同版本的性能对比 (阅读:4212)
- [squid] 过期时间在 60 秒内 squid 不 Cache 的问题 (阅读:3980)
- Hadoop超级安装手册 (阅读:3979)
- Squid 限制用户并发连接数 (阅读:3955)
- [Squid] TCP_MEM_HIT 和 TCP_HIT 的性能到底相差多远 (阅读:3657)
- squid缓存失效之谜:一步步提高squid缓存命中率办法记录 (阅读:3520)
- Ubuntu下Postgresql-8.4安装及配置 (阅读:3342)
- 加速WEB访问:使用DNSmasq与squid代理并过滤广告 (阅读:3340)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:西西鱼 来源: SourceJoy PHP Javascript web前端 用户体验 - 注于web应用开发
- 标签: Squid 安装
- 发布时间:2010-08-12 09:18:10
- [55] IOS安全–浅谈关于IOS加固的几种方法
- [53] android 开发入门
- [52] 图书馆的世界纪录
- [52] 如何拿下简短的域名
- [50] Go Reflect 性能
- [50] Oracle MTS模式下 进程地址与会话信
- [48] 【社会化设计】自我(self)部分――欢迎区
- [47] 读书笔记-壹百度:百度十年千倍的29条法则
- [37] 程序员技术练级攻略
- [27] 视觉调整-设计师 vs. 逻辑