Позвольте определенный путь URL со Сквидом

Я использую Сквид 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 (который я не хочу).

5
задан 15 March 2015 в 16:40
4 ответа

Заказ важен. Поставьте строку разрешения перед отрицанием.

Также url_regex совпадает с одним целым URL, включая http://, поэтому вам нужно изменить ваши регексы. Не забудьте перезапустить или перезагрузить кальмар после изменений.

1
ответ дан 3 December 2019 в 01:37

Думаю, вы ищете что-то вроде этого:

http_access allow good
http_access deny bad !good

Потому что на самом деле хороший регеxp совпадает с плохим регеxp, так что вам нужно использовать AND-коннектор во второй строке.

Обратите внимание, что вы можете отлаживать acl's с помощью этой строки:

debug_options ALL,1 28,3 33,2
0
ответ дан 3 December 2019 в 01:37

это описано здесь; 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
2
ответ дан 3 December 2019 в 01:37

Для всех, кто, как я, наткнулся на этот пост в поисках ответа. Причина в том, что squid не может видеть полный URL-адрес для HTTPS-запросов, только домен.

Вы можете сделать url_regex только для HTTP-соединений. Вы должны создать dstdomain для HTTPS-соединений.

Это зависит от того, как работает прокси CONNECT, а не от Squid ..

2
ответ дан 3 December 2019 в 01:37

Теги

Похожие вопросы