技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> Squid的Linux下安装配置笔记(下)

Squid的Linux下安装配置笔记(下)

浏览:1808次  出处信息

上一篇主要讲述了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


以上配置全部讲解完啦。大家把以上详细配置示例整理修改一下,就可以作为自己的反响代理缓存服务器啦。

建议继续学习:

  1. 使用Squid缓存视频    (阅读:9184)
  2. 系统架构的一些思考    (阅读:5622)
  3. [调优] Squid 不同版本的性能对比    (阅读:4220)
  4. [squid] 过期时间在 60 秒内 squid 不 Cache 的问题    (阅读:3984)
  5. Hadoop超级安装手册    (阅读:3981)
  6. Squid 限制用户并发连接数    (阅读:3959)
  7. [Squid] TCP_MEM_HIT 和 TCP_HIT 的性能到底相差多远    (阅读:3658)
  8. squid缓存失效之谜:一步步提高squid缓存命中率办法记录    (阅读:3526)
  9. Ubuntu下Postgresql-8.4安装及配置    (阅读:3342)
  10. 加速WEB访问:使用DNSmasq与squid代理并过滤广告    (阅读:3347)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1