在 Windows 上,使用 php 或 perl“url_rewrite_program”的 Squid

在 Windows 上,使用 php 或 perl“url_rewrite_program”的 Squid

我想将所有 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

相关内容