带有白名单和重定向的 Squid

带有白名单和重定向的 Squid

我设法在 Debian Squeeze 6.0 服务器上以透明模式设置 Squid3,并使用 iptables nat 重定向。

所有 80 端口上的请求都会被正确重定向到 squid,然后与白名单文件进行比较。

所有对白名单中未涵盖的站点的请求都将发送到自定义的 ERR_ACCESS_DENIED 页面。此页面包含一个简单的登录表单。

因此,当某个网站被阻止时,用户可以将该网站添加到白名单中。

我创建了一个非常简单的 PHP 脚本,它获取 URL(使用正则表达式),将其添加到白名单并重新启动 squid。

此时,我将使用简单的方法将浏览器重定向到新的授权网站

$your_url = http://www.example.com;
header("Location: $your_url");

但 squid 尝试检索时给出 ERR_INVALID_URL 页面

(null)://www.example.com

如果我尝试在地址栏中输入 URL,则该网站将正确提供。

我尝试在 PHP 中设置重定向前的超时时间,但即使超时时间为 1 分钟,重定向仍然会失败。与此同时,在地址栏中输入 URL 可以正常工作。

有什么线索吗?

更新切换到 Squid 2.7 后问题轻松解决

Squid3错误这里

答案1

切换到 Squid 2.7 后问题解决

答案2

我有一个名为 parentwall 的类似项目。我通过使用 squid -k reconfigure 而不是重新启动 squid 解决了这个问题。您可以使用 rc 脚本执行相同的操作。

重新启动 squid 需要很长时间,并且不需要重新加载白名单。

答案3

只是一个想法,但在这里简单地执行 javascript 重定向可能更简单。因此,不要尝试使用 PHP 进行重定向,而只需返回包含一些 javascript 的页面即可。

虽然它不太优雅,但可能会更容易。

相关内容