squid的重定向,我看网上一般都采用 redirect_children
(即 url_rewrite_children
)。估计是因为中文权威指南的原因吧。不过中文权威指南还是2.5版的时候出的。有些新东西没有。比如 squid.conf.default
中提供的另一种 url_rewrite_concurrency
。
官方使用说明如右:http://wiki.squid-cache.org/Features/Redirectors#How_do_I_make_it_concurrent.3F
简单的说,就是开启 url_rewrite_concurrency
后,squid传递给rewriter的流由四个域增加为五个——最前头多了一个ID。然后rewriter返回的,也就有两个域,ID和uri。
简单修改一下原来的脚本如下即可:
#!/usr/bin/perl -wl
use strict;
$|=1;
while () {
my ($id,$url,$client,$ident,$method) = ( );
($id, $url, $client, $ident, $method) = split;
if ($url =~m#^(.*)(?.*)#i) {
my ($domain,$option) = ($1,$2);
print "$id $domain\n";
} else {
print "$id\n";
}
}
然后squid.conf里修改如下:
acl rewriteurl url_regex -i ^http://drag.g1d.net/.*.mp40drag?
url_rewrite_access deny !rewriteurl
url_rewrite_program /home/squid/etc/redirect.pl
#url_rewrite_children 10
url_rewrite_concurrency 10