允许使用 Squid 的特定 URL 路径

uns*_*nsi 6 domain proxy web squid blocking

我在 Debian 上使用 Squid 3.4,我想知道如何在禁止其他子 URL 的同时允许某些子 URL。

特别是,我想禁止访问 reddit.com/* 但允许访问 reddit.com/r/foo/* 和 reddit.com/r/foo/

acl bad url_regex reddit\.com.*
acl good url_regex reddit\.com.*foo*

http_access deny bad
http_access allow good

...
http_access allow localnet
http_access allow localhost
http_access deny all
Run Code Online (Sandbox Code Playgroud)

这段代码似乎不起作用,reddit.com 上的所有内容最终都被屏蔽了。我怎样才能得到我想要的配置?

编辑:更新的配置仍然不起作用:

acl good url_regex http(s)?://(www\.)?reddit\.com/r/foo.*
acl bad url_regex http(s)?://(www\.)?reddit\.com.*

http_access allow good
http_access deny bad

...
http_access allow localnet
http_access allow localhost
http_access deny all
Run Code Online (Sandbox Code Playgroud)

这与前面的代码有相反的效果;它允许访问所有 reddit.com(我不想要)。

小智 9

对于像我这样偶然发现这篇文章寻找答案的人。原因是squid无法看到HTTPS请求的完整URL,只能看到域。

您只能对 HTTP 连接执行 url_regex。您必须为 HTTPS 连接创建 dstdomain。

这取决于代理 CONNECT 的工作方式,而不是 Squid 问题。


Pau*_*ane 2

顺序很重要。将允许行放在拒绝行之前。

另外 url_regex 匹配整个 URL,包括 http://,因此您需要更改正则表达式。记得在更改后重新启动或重新加载鱿鱼。