用于消除cdn访问重复的squid 3代理助手
squid-dedup的Python项目详细描述
Squid重复数据消除是Squid代理帮助程序,有助于在以下情况下减少缓存未命中 使用不同的url(即cdn)访问相同的内容。
此帮助程序实现squid storeid协议,如squid 3所示 向前。配置文件中指定的url模式被重写为 唯一的内部地址。进一步的访问,以同样的方式修改,映射到 已经存储了对象,即使使用不同的url。
全局配置选项在主配置文件中指定,其中 必须存在。可以使用–extract命令行开关创建模板 当前目录。
cdn match/replacement参数在其他配置文件中指定。
安装
$ python3 setup.py install
为自定义配置文件创建目录:
$ mkdir /etc/squid/dedup
创建主配置文件模板/etc/squid/squid_dedup.conf:
$ cd /etc/squid $ squid_dedup -X
opensuse cdn:
$ gen_openSUSE_dedups
创建/etc/squid/dedup/opensuse.conf。
激活
将类似的值添加到/etc/squid/squid.conf:
store_id_program /usr/bin/squid_dedup store_id_children 20 startup=10 idle=5 concurrency=0 acl getmethod method GET store_id_access deny !getmethod store_id_access allow all
就这样。
配置
主配置位于/etc/squid/squid_dedup.conf中, 定义了一般行为。
其他配置文件应存储在/etc/squid/dedup中,例如:
[sourceforge] match: http:\/\/[a-zA-Z0-9\-\_\.]+\.dl\.sourceforge\.net\/(.*) replace: http://dl.sourceforge.net.%(intdomain)s/\1 fetch: false
这里,任何指向dl.sourceforge.net的子域的url都被映射到 dl.sourceforge.net.%(intdomain)s,其中%(intdomain)s根据 到/etc/squid/squid_dedup.conf中intdomain的值。
match是匹配url的正则表达式列表,用换行符分隔, 所有后续url都缩进。
replace是单个替换值。
fetch是一个可选的布尔标志。如果启用了fetch,则会获取该对象 还有(有一定的延迟)。这对客户端很有用,下载字节 范围仅来自多个源。这种行为会导致无法访问的对象 否则。注意不要多次获取对象。
默认情况下,对配置文件的更改会导致自动重新加载。
观看
您可能希望在/etc/squid/squid_dedup.conf.中提高日志级别:
$ less +F /var/log/squid/dedup.log
注释
gen_opensuse_dedups实用程序的用户身份是 crontab,例如:
$ touch /etc/squid/dedup/opensuse.conf $ chown user:group /etc/squid/dedup/opensuse.conf $ chmod 644 /etc/squid/dedup/opensuse.conf $ su - user > crontab -e
添加一行类似于:
0 6 * * * /usr/bin/gen_openSUSE_dedups -vs
学分
基本思想和php中的参考实现是由per jessen完成的。
per,感谢您对本主题的宝贵讨论。