我想将所有 http 代理流量重定向到 perl 或 php 脚本。
我有一个可以正常工作的 Squid 设置,并且在我的 squid.conf 中有这个
url_rewrite_program "c:\\squid\\redirect.pl"
但是当我在控制台中启动 squid 时,它存在程序异常终止这是在 cache.log 中的内容:
2012/03/23 19:26:12| helperOpenServers: Starting 5 'c:\squid\php\redirect.pl' processes
2012/03/23 19:26:12| ipcCreate: CHILD: c:\squid\php\redirect.pl: (8) Exec format error
2012/03/23 19:26:12| ipcCreate: PARENT: OK read test failed
2012/03/23 19:26:13| --> read returned 4
PHP 脚本也发生同样的情况。当我直接在控制台中执行时,脚本运行正常。
perl脚本内容:
#!/usr/bin/env perl
$|=1;
while (<>) {
$url = m/^([^ ]*)/;
if ($url !~ /^http:\/\/www\.hostname\.com/) {
$url =~ s@^http://www\.hostname\.com/(.*)@http://www.hostname.com/\1@;
print "301:$url\n";
} else {
print "$url\n";
}
}
enter code here
答案1
从http://wiki.squid-cache.org/KnowledgeBase/Windows:
Squid 不知道如何运行基于脚本的外部帮助程序,如 .bat、.cmd、.vbs、.pl 等。因此,在 squid.conf 中必须始终指定解释器路径,例如:
url_rewrite_program c:/perl/bin/perl.exe c:/squid/libexec/redir.pl