cache_peer(forceddomain)参数的应用

来源:百度文库 编辑:神马文学网 时间:2024/04/29 13:01:29

cache_peer(forceddomain)参数的应用

初学Squid的朋友可能会发现Squid并非万能的,有很多网站其无法逆向代理。例如逆向代理另一个经过Squid缓存的网站,或是一个绑定了主机头的虚拟主机。

      例子:在Squid中将123.jstzsb.cn这个二级域名指定给www.123.com这个网站(假设该网站经过了Squid缓存)

      通常的配置
cache_peer www.123.com parent 80 0 no-query originserver no-digest name=cache1
cache_peer_domain cache1 123.jstzsb.cn
      这样配置用浏览器访问123.jstzsb.cn就会提示无法连接上级缓存服务器

      这是为什么呢?让我们看一下www.123.com的Squid配置
cache_peer 192.168.1.1 parent 80 0 no-query originserver no-digest name=cache1
cache_peer_domain cache1 www.123.com
      问题出来了123.com的主机配置规则仅接受主机头为www.123.com的连接请求

      我们假设123.jstzsb.cn的主机为Squid_A,www.123.com的主机为Squid_B,请看访问流程:
       浏览器提交123.jstzsb.cn的请求->Squid_A接受到请求- >Squid_A对比规则成功开始将该请求提交给www.123.com->Squid_B接受到来自Squid_A的一个请求其主机头为 123.jstzsb.cn->Squid_B对比发现无法匹配其cache_peer_domain中的规则->Squid_B放弃响应

      难道就没有办法在Squid_A请求时将主机头信息替换成www.123.com吗?答案是有。
只需在Squid_A上的cache_peer www.123.com 80 0 no-query originserver no-digest name=cache1的最后加上forceddomain=www.123.com即可,这样Squid_B接受到的主机头信息就匹配其 cache_peer_domain中的规则了,逆向代理也自然能成功了。

      forceddomain参数顾名思义是域名强制转换,这就能为我们做很多事,例如一个网站有很多域名。例如:
www.abc.com/www.abc.cn/www.abc.org 同时指向一个主机,如果不使用forceddomain参数Squid缓存里往往要缓存三个不同域名而内容相同的信息,这不仅降低了Squid的性能也影响其命中率。只要在配置parent的主机时添加forceddomain=www.abc.com参数,就能将所有其他域名的请求统一转为访问 www.abc.com

      forceddomain英文注释:
use 'forceddomain=name' to forcibly set the Host header
of requests forwarded to this peer. Useful in accelerator
setups where the server (peer) expects a certain domain
name and using redirectors to feed this domain name
is not feasible.