浅谈Squid在图片存储架构中的应用
酷勤网 � 程序员的那点事!
前言
上一篇我表明了自己对缓存的立场:缓存一切可以缓存的资源。并讨论了如何利用IIS自身的缓存功能来轻松满足中小规模的图片缓存需求。关于IIS的客户端缓存和服务器端缓存的介绍大家可以回顾 这篇文章。自从上一篇文章发表后,有不少朋友向我反馈:用IIS自身的缓存功能负载有限,建议使用
- GNU通用公共许可证,意味着你可以在同等开源协议下使用和修改Squid。
- 支持多种协议,目前支持http、ftp、gopher、wais、ssl等网络协议。
- 支持分布式集群,Squid使用TCP(HTTP)和UDP(ICP/HTCP)通讯来确定邻居cache的状态。
- 支持访问控制,通过设置ACL和ARL来限制某些访问。
Squid官方网站: http://www.squid-cache.org/
你可以在官网上下载Squid以及阅读相关文档,当然接下来我也会用Chinese向大家介绍Squid的用法。
Squid配置详细说明
下面是一份详细的Squid的配置清单及其说明:
#http_port指令告诉squid在哪个端口侦听HTTP请求。默认端口是3128,除下面的形式外,也可以是http_port 192.168.63.50:3128
#缓存目录的设置,可以设置多个缓存目录,语法为:<cache_dir> <aufs|ufs> <目录所在> <MBytes大小> <dir1> <dir2>
cache_dir ufs /var/spool/squid 1000 64 1024
#下面是关于日志文件的放置目录与文件名!
cache_access_log /var/log/squid/access .log
cache_log /var/log/squid/cache .log
cache_store_log /var/log/squid/store .log
pid_filename /var/run/squid .pid
#关闭认证机制,有些版本的 squid 会自动的加入代理认证机制,而普通情况下是不需要的,故找到包括auth_param的行,给它们加上注释
#auth_param basic children 5
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
#设置squid用户及用户组、管理员账号
cache_effective_user squid
cache_effective_group squid
cache_mgr [email protected]
# 与内存有关的配置:因为我的系统内存很小,所以只给 8 MB!如果您的物理内存很大的情况下,例如 512 MB,可以考虑加大到 64 或 128 MB。
cache_mem 128 MB
# 与磁盘容量有关的配置(注:下列的 90 与 95 是百分比 ),如果您的 cache_dir 所在磁盘很大时,可以考虑将 4096 改成 32768 KB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 4096 KB
maximum_object_size_in_memory 8 KB
#定义acl(访问控制列表), 语法为:acl<acl> <acl名称> <acl类型> <配置的内容>
acl All src 0 /0
acl Manager proto cache_object
acl Localhost src 127.0.0.1 /32
acl Safe_ports port 80 21 443 563 70 210 280 488 591 777 1025-65535
acl SSL_ports 443 563
acl CONNECT method CONNECT
acl MyNetwork src 192.168.0.0 /16
#利用前面定义的acl,定义访问控制规则
http_access allow Manager Localhost
http_access deny Manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow MyNetwork
http_access deny All
#定义与其它代理服务器的关系,语法: <cache_peer> <主机名称> <类别> <http_port> <icp_port> <其它参数>
cache_peer 192.168.60.6 parent 4480 7 no-query default
#设置与其它代理服务器的关系:
# <cache_peer_access> <上层 Proxy > <allowdeny> <acl名称>
#cache_peer_access 192.168.60.6 allow aclxxx
#cache_peer_access 192.168.60.6 deny !aclxxx
coredump_dir /var/spool/squid
|
注意:以上的配置说明来自 这里。
配置好以后,我们就可以启动squid了,启动的步骤如下:
1). 我们可以运行下面的命令来检查配置文件的正确性:
# squid -k parse
只有这一步正确你才可以进行下一步的操作
2). 初始化cache目录.即建立缓存目录的存储格式
只需在第一次启动squid服务之前执行(在初次运行squid之前,或者无论何时你增加了新的cache_dir,你必须初始化cache目录。)
# squid -z
cache目录初始化可能花费一些时间,依赖于cache目录的大小和数量,以及磁盘驱动器的速度。假如你想观察这个过程,请使用-X选项:
# squid -zX
3). 启动squid服务
# service squid start
假定squid安装在/usr/local/squid目录下,也可以
# /usr/local/squid/sbin/squid -sD
最后,我推荐你去看看 Squid权威指南,并希望你可以利用Squid成功搭建一个分布式图片缓存系统,Squid真的很棒!
[ comments ]