Я использую Сквид 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 (который я не хочу).
Заказ важен. Поставьте строку разрешения перед отрицанием.
Также url_regex совпадает с одним целым URL, включая http://, поэтому вам нужно изменить ваши регексы. Не забудьте перезапустить или перезагрузить кальмар после изменений.
Думаю, вы ищете что-то вроде этого:
http_access allow good
http_access deny bad !good
Потому что на самом деле хороший
регеxp совпадает с плохим
регеxp, так что вам нужно использовать AND-коннектор во второй строке.
Обратите внимание, что вы можете отлаживать acl's с помощью этой строки:
debug_options ALL,1 28,3 33,2
это описано здесь; 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
Для всех, кто, как я, наткнулся на этот пост в поисках ответа. Причина в том, что squid не может видеть полный URL-адрес для HTTPS-запросов, только домен.
Вы можете сделать url_regex только для HTTP-соединений. Вы должны создать dstdomain для HTTPS-соединений.
Это зависит от того, как работает прокси CONNECT, а не от Squid ..