web-dev-qa-db-ja.com

キャッシュを使用したフォワードプロキシとしてのApacheの設定

キャッシュ付きのフォワードプロキシとしてApacheを設定しようとしていますが、正しく機能していないようです。 Apacheをフォワードプロキシとして機能させることは問題ありませんでしたが、私が何をしても、ディスクやメモリに何もキャッシュしていません。 mods_enabledディレクトリでmod_cacheと競合するものがないことをすでに確認し(すべてコメントアウトすることになりました)、また、キャッシュ関連のすべてのフィールドをmod_cacheの構成ファイルに移動してみました。さらに、キャッシュ要求のログを設定しましたが、それらのログには何も書き込まれていません。以下は私のApache設定です、どんな助けでも大歓迎です!!

<VIRTUALHOST *:8080>
ProxyRequests On
ProxyVia On
#ErrorLog "/var/log/Apache2/proxy-error.log"
#CustomLog "/var/log/Apache2/proxy-access.log" common
CustomLog "/var/log/Apache2/cached-requests.log" common env=cache-hit
CustomLog "/var/log/Apache2/uncached-requests.log" common env=cache-miss
CustomLog "/var/log/Apache2/revalidated-requests.log" common env=cache-revalidate
CustomLog "/var/log/Apache2/invalidated-requests.log" common env=cache-invalidate
LogFormat "%{cache-status}e ..."

        # This path must be the same as the one in /etc/default/Apache2
        CacheRoot /var/cache/Apache2/mod_disk_cache

        # This will also cache local documents. It usually makes more sense to
        # put this into the configuration for just one virtual Host.

        CacheEnable disk /
        #CacheHeader on
        CacheDirLevels 3
        CacheDirLength 5
##<IfModule mod_mem_cache.c>
#        CacheEnable mem /
#        MCacheSize 4096
#        MCacheMaxObjectCount 100
#        MCacheMinObjectSize 1
#        MCacheMaxObjectSize 2048
#</IfModule>


<Proxy *>
Order deny,allow
Deny from all
Allow from x.x.x.x
#IP above hidden for this post

<filesMatch "\.(xml|txt|html|js|css)$">
ExpiresDefault A7200
Header append Cache-Control "proxy-revalidate"
</filesMatch>

</Proxy>
</VIRTUALHOST>
2
Karl

これは古い投稿ですが、自分の答えを見つけたいと思って見つけたので、できることを共有します。役に立つかもしれません。

あなたが言ったことを考えると、私はこうします:

  1. Apacheが/ var/cache/Apache2/mod_disk_cacheへの書き込みアクセス権を持っていることを確認します
  2. すべてをキャッシュするように強制し、キャッシュディレクトリが空でないことを確認して、何かをキャッシュできることを確認します( 完全な例 ):

    CacheIgnoreNoLastMod On

    CacheDefaultExpire 7200

  3. 上記が機能しない場合、問題はmod_cacheまたはmod_disk_cacheにあるのではないと思います。もしそうならここでやめて、そうでなければ続けてください:

  4. Xml | txt | html | js | cssへのリクエストがGETリクエストであることを確認してください(間違いなく他のものです)。
  5. 「Authorization」ヘッダーがないことを確認してください。
  6. Cache-Controlプライベートヘッダーまたはno-storeヘッダーがまだ存在しないことを確認してください。ある場合は、「ヘッダー追加」の前に以下を追加します。

    ヘッダーの未設定のキャッシュ制御

  7. 「Etag」、「Last-Modified」、または「Expires」ヘッダーがあることを確認します。 (おそらく、プロキシのパブリック側から、mod_expireが実際にexpiresヘッダーを設定していることを確認するように要求できますか?)

  8. Apacheキャッシングドキュメントの概要の「 何をキャッシュできますか? 」セクションをお読みください。

ちなみに、ディスクキャッシュは機能していますが、%{cache-status}をログに表示する方法を理解できていません。

3
josephdpurcell