web-dev-qa-db-ja.com

Squidで特定のURLパスを許可する

私は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

このコードは機能していないようで、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へのアクセスを許可します(これは不要です)。

6
unsi

答えを探してこの投稿を偶然見つけた私のような他の誰にとっても。その理由は、squidはHTTPSリクエストの完全なURLを表示できず、ドメインのみを表示できるためです。

HTTP接続に対してのみurl_regexを実行できます。 HTTPS接続にはdstdomainを実行する必要があります。

これは、プロキシのCONNECTが機能する方法によるものであり、Squidの問題ではありません。

3
Mike Evans

ここで説明されています。 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はhttp://を含むURL全体と一致するため、正規表現を変更する必要があります。変更後は必ずsquidを再起動またはリロードしてください。

1
Paul Haldane

私はあなたがこのようなものを探していると思います:

http_access allow good
http_access deny bad !good

実際、good正規表現はbad正規表現にも一致するため、2行目でANDコネクタを使用する必要があります。

次の行でaclをデバッグできることに注意してください。

debug_options ALL,1 28,3 33,2
0
SamK