Я использую Squid 3.4 в Debian, и я хочу знать, как разрешить определенные суб-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
Этот код не работает, и все на 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
Это имеет обратный эффект по сравнению с предыдущим кодом; он позволяет получить доступ ко всему reddit.com (что мне не нужно).
Для всех, кто, как я, наткнулся на этот пост в поисках ответа. Причина в том, что squid не может видеть полный URL-адрес для HTTPS-запросов, только домен.
Вы можете использовать url_regex только для HTTP-соединений. Вы должны сделать dstdomain для HTTPS-соединений.
Дело в том, как работает прокси CONNECT, а не в Squid.
это описано здесь; http://wiki.squid-cache.org/SquidFaq/SquidAcl
Моя текущая установка такова;
acl special_client src 10.1.255.93
acl special_url url_regex ^http://ppa.launchpad.net/adiscon/v8-devel/ubuntu/.*
http_access allow special_client special_url
http_access deny special_url
Порядок важен. Поместите строку разрешения перед запретом.
Также url_regex соответствует одному целому URL-адресу, включая http: //, поэтому вам нужно изменить свои регулярные выражения. Не забудьте перезапустить или перезагрузить squid после изменений.
Я думаю, вы ищете что-то вроде этого:
http_access allow good
http_access deny bad !good
Потому что на самом деле good
регулярное выражение соответствует bad
regexp, поэтому вам нужно использовать соединитель AND во второй строке.
Обратите внимание, что вы можете отлаживать acl с помощью этой строки:
debug_options ALL,1 28,3 33,2