注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

squid的重定向功能分析  

2013-05-27 04:12:36|  分类: squid系统应用 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

(节选)

11.4 配置Squid(5个squid.conf指令,控制squid里的重定向器的行为)

下列5个squid.conf指令,控制squid里的重定向器的行为。


 11.4.1 redirect_program

redirect_program指令指定重定向程序的命令行。例如:

redirect_program /usr/local/squid/bin/my_redirector -xyz

注意,重定向程序必须能被squid的用户ID执行。假如因为某些理由,squid不能执行重定向器,你将在cache.log里见到错误消息。例如:

ipcCreate: /usr/local/squid/bin/my_redirector: (13) Permission denied

因为squid的工作方式,主squid进程可能不知道执行重定向程序的问题所在。squid不会检测到错误,直到它试图写一个请求和读到一个响应。然后它打印:

WARNING: redirector #1 (FD 6) exited

这样,假如你见到发送给squid的第一个请求的如此错误,请仔细检查cache.log的其他错误,并确保重定向程序可被squid执行。


 11.4.2 redirect_children

redirect_children指令指定squid应该开启多少重定向进程。例如:

redirect_children 20

当所有重定向器同时忙碌时,squid会通过cache.log发出警告:

WARNING: All redirector processes are busy.WARNING: 1 pending requests queued.

假如见到这样的警告,你应该增加子进程的数量,并重启(或reconfigure)Squid。假如队列的size变成重定向器数量的2倍,squid以致命错误退出。

不要试图将redirect_children设为0来禁止squid使用重定向器。简单的从squid.conf里删除redirect_program行就可以了。


11.4.3 redirect_rewrites_host_header

正 常情况下,squid在使用重定向器时,会更新请求的Host头部。也就是说,假如重定向器返回的新URI里包含不同的主机名,squid将新的主机名放 在Host头部。假如使用squid作为代理人(surrogate,见15章),你也许想将 redirect_rewrites_host_header指令设为off来禁止这种行为:

redirect_rewrites_host_header off
11.4.4 redirector_access

正常情况下,squid将每个请求发送往重定向器。然而,可以使用redirector_access规则来有选择的发送某些请求。该语法与http_access相同:

redirector_access allow|deny [!]ACLname ...


 

例如:

acl Foo src 192.168.1.0/24acl All src 0/0redirector_access deny Fooredirector_access allow All

在该情形里,对任何匹配Foo ACL的请求,Squid跳过重定向器。


11.4.5 redirector_bypass

假如激活了redirector_bypass指令,squid在所有重定向器忙碌时,会绕过它们。正常情况下,squid将未处理请求排队,直到某个重定向进程可用。假如该队列增长得太大,squid以致命错误退出。激活该指令确保squid永不会达到那种状态。

当然,折衷点是当负载高时,某些用户请求可能不会被重定向。假如这样对你没问题,简单的激活该指令即可:

redirector_bypass on

11.5 流行的重定向器

我已经提过,squid的源代码未包含任何重定向器。然而,通过http://www.squid-cache.org的Related Software页面的链接,可以找到许多有用的第三方重定向器。如下是一些流行的重定向器:


11.5.1 Squirm

http://squirm.foote.com.au/

 

Squirm出自Chris Foote之手。它用C编写,并在GNU公用许可证(GPL)下发布源代码。Squirm的功能包括:

  • 1)非常快速,最少的内存使用
  • 2)完全正则表达式匹配和替换
  • 3)对不同的客户组应用不同的重定向列表
  • 4)命令行的交互式模式的测试
  • 5)防故障模式,假如配置文件包含错误,它不对请求作任何改变
  • 6)将debug信息,错误信息,和其他更多信息写往不同日志文件


11.5.2 Jesred

http://www.linofee.org/~elkner/webtools/jesred/

 

Jesred出自Jens Elkner之手。它用C编写,基于Squirm而来,也在GNU GPL下发行。其功能包括:

  • 1)比Squirm更快,但内存使用稍多
  • 2)在运行时能重读配置文件
  • 3)完全正则表达式匹配和替换
  • 4)防故障模式,假如配置文件包含错误,它不对请求作任何改变
  • 5)可选择的记录重写请求到日志文件


11.5.3 squidGuard

http://www.squidguard.org/

 

squidGuard 出自Tele Danmark InterNordia的Pal Baltzersen和Lars Erik Haland。它在GNU GPL下发行。作者确保squidGuard在现代Unix系统上能轻松编译。他们的站点包含了许多好文档。如下是squidGuard的一些功能:

 

  • 1)高度可配置;你能在不同的时间,应用不同的规则到不同的客户组
  • 2)URI置换,而非仅仅替换
  • 3)printf形式的置换,允许递交参数给CGI脚本来定制消息
  • 4)支持重定向器的 301/302/303/307 HTTP重定向状态码功能
  • 5)可选择的重写规则日志记录

在squidGuard的站点,还可以找到超过100,000个站点的黑名单,它们以色情,暴力,毒品,黑客,广告,和其他更多形式来分类。

11.5.4 AdZapper

http://www.adzapper.sourceforge.net

AdZapper 是个流行的重定向器,因其明确的目标是从HTML页面里移除广告。它是 Cameron Simpson所写的Perl脚本。AdZapper能阻止横幅图片,弹出式窗口,flash动画,页面计数器,和web bug。该脚本包含正则表达式列表,用以匹配某些已知包含广告,弹窗等的URI。Cameron定期更新该脚本的模式匹配。你也能维护你自己的模式匹配列 表。

******************************************

笔者主为:ATS与nginx都方便多了,则效率更高。squid而要加油了。

  评论这张
 
阅读(337)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017