イカがキャッシングしない


8

Squidをキャッシュサーバーとして構成しようとしています。Webサーバー(apache)が192.168.122.11squidに192.168.122.21あり、クライアントがにあるLANがあります192.168.122.22。問題は、Squidのアクセスログを見ると、TCP_MISSメッセージだけが表示されていることです。Squidはまったくキャッシュしていないようです。キャッシュディレクトリにすべての適切な権限があることを確認しました。ここで他に何がうまくいかないことがありますか?これが私のイカの設定です:

acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.1/8 0.0.0.0/32 ::1
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl CONNECT method CONNECT
http_access allow all
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
http_port 3128 accel defaultsite=cona-proxy vhost
cache_peer 192.168.122.11 parent 80 0 no-query originserver login=PAS name=webserver
cache_dir ufs /var/spool/squid3 100 16 256
coredump_dir /var/spool/squid3
refresh_pattern ^ftp:   1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?)   0   0%  0
refresh_pattern (Release|Packages(.gz)*)$   0   20% 2880
refresh_pattern .   0   20% 4320
always_direct allow all
acl server_users dstdomain cona-proxy
http_access allow server_users
cache_peer_access webserver allow server_users
cache_peer_access webserver deny all

すべてのマシンでは、cona-proxyの点は192.168.122.21(中ことを添加/etc/hosts

の出力 curl -v 192.168.122.11

* About to connect() to 192.168.122.11 (#0)
* Trying 192.168.122.11... connected
> GET / HTTP/1.1
> User-Agent: curl/7.22.0 (i686-pc-linux-gnu) libculr/7.22.0 OpneSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: 192.168.122.11
> Accept: */*
>
< HTTP/1.1 202 OK
< Date Mon, 02 Jul 2012 05:48:50 GMT
< Server: Apache/2.2.22 (Ubuntu)
< Last-Modified: Tue, 19 Jun 2012 23:04:25 GMT
< ETag: "27389-b1-4c2db4dc2c182"
< Accept_Ranges: bytes
< Content-Length: 177
< Vary: Accept-Encoding
< Content-Type: text/html
< X-Pad: avoid browser bug
<
<html><body><h1>It works!</h1>
<p>This is the default web page for the server.</p>
<p>The web server software is running but no content has been added, yet. </p>
</body></html>
* Connection #0 to host 192.168.122.11 left intact
* Closing connection #0

テストするときは、テストページでキャッシュが許可されていることを確認してください。たとえば、SSLページはキャッシュされません。
Mircea Vutcovici

とりあえず、Apacheのデフォルトの「It works」ページを用意しました。それはうまくキャッシュされるべきだと思います。
Abhishek Chanda 2012年

私はあなたのイカの設定を追加する必要があります。
クリストファーペリン

イカの設定を追加
Abhishek Chanda '30

1
投稿したサンプルリクエストでは、コンテンツはキャッシュできません
symcbean 2012

回答:


3

あなたの設定では、あなたはこの行を逃しました:

acl myhosts src 192.168.0.0/255.255.0.0 (your internal network/netmask)
http_access allow myhosts

編集1:

Webサーバーはcache_peerではありません。この行を設定ファイルから削除してください。Squidは、キャッシュ間の相互運用性のために、Apacheが知らない別のタイプのプロトコル(ICP)を備えています。


私の内部ネットワークは192.168.0.0/255.255.255.0です。私がこれらの2行を追加したとき、私のブラウザは次のように言っていますproxy server is refusing connections
Abhishek Chanda

1
アドレス192.168.122.11などを使用している場合、ネットワークは192.168.0.0/255.255.255.0ではなく、192.168.122.0 / 255.255.255.0です。
Jan Marek

または、おそらく192.168.0.0/255.255.0.0
クリストファー・ペリン

1
それは私の最初のアドバイスでした、私の答えを見てください... :-)
Jan Marek

承知しました!ごめんなさい!私が投稿したのは非常に遅い/早いです!
クリストファーペリン

7

私の経験では、Squidがコンテンツのキャッシュを拒否する最も一般的な3つの理由は次のとおりです。

  • ディレクトリのアクセス許可をキャッシュします。良い :)
  • http_access、しかしそれあなたのケースではありませんTCP_MISS、あなたのaccess.logに行が表示されているからです
  • refresh_pattern ディレクティブ

refresh_pattern ディレクティブは、特にブラウザがリクエストを行う方法、およびどのキャッシュ制御HTTPヘッダーが交換されるかに関連して、Squidがオブジェクトを新鮮または古いと見なす方法を制御します。

refresh_patternあなたの構成を持っている行は、イカのデフォルトの線です。しかし、私は2週間前にUbuntuにSquidをインストールしたばかりで、これらのデフォルトではほとんど何もキャッシュしません。

Squidのrefresh_patternに関するドキュメントで各行の意味を説明する必要がありますが、実際にはそのドキュメントの意味を理解できません。そしてどうやら私は一人じゃない :)

以下のパターンを1つ以上追加し、満足するまで特定のファイル/ URLをテストすることをお勧めします。例:

refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 3600 90% 43200

これを使用すると、すべてのアイコン/画像を少なくとも1時間から最大半日までキャッシュ可能と見なすようにSquidに指示することになります。ブラウザが特定のキャッシュヘッダーを含むHTTPリクエストを送信すると、SquidはTCP_MISSとにかく応答します。キャッシュされた応答を強制するには、クライアントの期待に反する場合でも、これを行うことができます。

refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 3600 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private

より大きな映画/オーディオ/ ISOファイルについても同様です:

refresh_pattern -i \.(mp[34g]|swf|wav|...)$ 43200 90% 432000

他に何か失敗した場合は、強力なハンマーを使用してください:)しかし、私はこれをお勧めしません

refresh_pattern . 3600    80%     14400

少なくとも1時間はすべてをキャッシュできるとSquidに伝えています。ただし、これはほぼ確実に動的アプリケーションを壊します。キャッシュしようとしているサーバーのほとんどが静的コンテンツで構成されている場合に使用します。

また、忘れないでくださいmaximum_object_size。デフォルトでは20Mbです。キャッシュしようとしているオブジェクトがそれよりも大きい場合、Squidはそれらをキャッシュしません。私はそれを200メガバイトに10倍に増やしました。YMMV。

maximum_object_size 204800 KB

ところで、cache_peerApacheを指しているため、行は正しくありません。cache_peerイカ話すでは通常、昔のISPのキャッシュサーバにするために使用することを、他のイカのインスタンス高いアップキャッシュ階層です。その行を削除してください。

そして成功を祈る :)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.