Squid中文权威指南第十一章

2009-05-13 12:01:04来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

第11章 重定向器
重定向器是
[url=javascript:;]squid[/url]

外部程序,它重写来自客户请求的URI。例如,尽管某个用户请求这个页面:http://www.example.com/page1.html
,重定向器可以将请求改变到别的地方,例如:http://www.example.com/page2.html
。squid自动抓取新的URI,就像是客户端的原始请求一样。假如响应可被缓存,squid将它存储在新的URI下。
重定向功能允许你执行与squid相关的许多有趣事情。许多站点
[url=javascript:;]使用[/url]
它们实现如下目的:访问控制,移除广告,本地镜像,甚至用以绕开浏览器的bug。
关于使用重定向器进行访问控制的好处之一是,你可以将用户的请求重定向到某个页面,这个页面详细解释为何她的请求被拒绝。你也会发现重定向器比squid内建的访问控制提供更多的弹性。然而不久你会看到,重定向器并不能访问包含在客户请求里的完整信息。
许多人使用重定向器来过滤web页面广告。大部分情形下,可以将对GIF或JPEG广告图片的请求,改变为请求位于本地服务器上的,小而空的图片。这样,广告就消失了,然而不会影响页面布局。
所以在本质上,重定向器其实就是一个程序,它从标准输入里读取URI和其他信息,并将新的URI写往标准输出。Per和Python是写重定向器的流行语言,尽管某些作者使用编译性语言(例如C)以求更好的性能。
Squid
的源代码没有包含任何重定向程序。作为管理员,你有责任编写自己的重定向器,或者下载别人编写的。该章开头部分描述在squid和重定向进程之间的接口。
我也提供几个简单的Perl重定向器示例。假如你志在使用别人的重定向器,而不是自己编写,请跳到11.3章。
11.1 重定向器接口
重定向器在其标准输入里,每次一行的接受来自squid的数据。每行包括下列四个元素,以空格分开:
  • 1)请求URI
  • 2)客户IP地址和完全可验证域名
  • 3)用户名,通过RFC 1413 ident或代理验证
  • 4)HTTP请求方式

例如:
http://www.example.com/page1.html 192.168.2.3/user.host.name jabroni GET
请求URI取自客户请求,包括任何查询条件。然而,分段标记(例如#字符和随后的文本)被移除了。

二个元素包含客户IP地址,和可选的完整可验证域名(FQDN)。假如激活了log_fqdn指令或使用了srcdomain
ACL元素,FQDN才会设置。尽管那样,FQDN也许仍未知,因为客户网络管理员没有在其DNS里正确的设置反向指针区域。假如squid不知道客户的
FQDN,它用一个短横线(-)代替。例如:
http://www.example.com/page1.html 192.168.2.3/- jabroni GET

如squid了解请求背后的用户名,客户ident域才会设置。假如使用了代理验证,ident
ACL元素,或激活了ident_lookup_access,这点才会发生。然而请记住,ident_lookup_access指令不会导致
squid延缓请求处理。换句话说,假如你激活了该指令,但没有使用访问控制,squid在写往重定向进程时,也许仍不知道用户名。假如squid不知道
用户名,它显示一个短横线(-)。例如:
http://www.example.com/page1.html 192.168.2.3/- - GET
Squid从重定向进程里读回一个元素:URI。假如squid读取一个空行,原始URI保留不变。
重定向程序永不退出,除非在标准输入里发生end-of-file。假如重定向进程确实过早退出,squid在cache.log里写一条警告信息:
WARNING: redirector #2 (FD 18) exited
假如50%的重定向进程过早退出,squid会以致命错误消息退出。
11.1.1 处理包含空格的URI
假如请求URI包含空格,并且uri_whitespace指令设置为allow,那么任何在URI里的空格被递交到重定向器。如果重定向器的解析器很简单,那它在这种情况下会很困惑。在使用重定向器时,有2个选项来处理URI里的空格。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Squid中文权威指南第九章

下一篇:Squid中文权威指南第十章