この質問を Apache httpd-users メーリング リストに 1 週間前に投稿しましたが、回答はありません。それ以来、私はもう少し仕事をしたので、ここで助けてもらえることを願っています、ありがとう!
私の Apache 仮想ホストでは、特定の URL に対してリバース プロキシが機能しています。私の使用例: プライバシーを尊重した Web 統計に plausible.io を使用しています。proxy の必要性に関する Plausible の議論を参照してください。ここに私の設定のその部分があります:
SSLProxyEngine on
ProxyPass "/api/event" "https://plausible.io/api/event"
ProxyPass "/p.js" "https://plausible.io/js/plausible.js"
Plausible から Javascript を提供している私の Web サイトの場所は次のとおりです: https://pseud.ony.ms/p.js
応答には以下が含まれます。
cache-control: max-age=0, private, must-revalidate
ここで、Javascript ファイルをキャッシュし、Expires、Last-Modified、Cache-Control などの適切なヘッダーを付けて提供し、適切な場合に 304 を応答するようにローカル サーバーを構成する方法を考えたいと思います。
私は Apache のドキュメントを参照し、リバース プロキシと Apache によるキャッシングに関する次のようなクックブックの記事を読みました。
- https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html
- https://taylor.callsen.me/creating-a-caching-proxy-server-with-apache/
しかし、それらはすべてが逆プロキシされているサーバーについて説明しています。これらのいくつかの場所のみをプロキシしてキャッシュしたいと考えています。
仮想ホストでこれらのディレクティブを考え出すのに少し時間を費やしました(動作しないため、これを書いているときはアクティブではありません):
ExpiresActive On
ExpiresByType application/javascript "access plus 1 years"
# CacheRoot directory created by a2enmod cache_disk
CacheRoot /var/cache/apache2
CacheQuickHandler off
CacheLock on
CacheLockPath /tmp/mod_cache-lock
CacheLockMaxAge 5
CacheIgnoreCacheControl On
CacheHeader On
Header unset Expires
Header unset Cache-Control
Header unset Pragma
CacheEnable disk /p.js
SSLProxyEngine on
ProxyPass "/api/event" "https://plausible.io/api/event"
ProxyPass "/p.js" "https://plausible.io/js/plausible.js"
これらのディレクティブを有効にすると、応答で Cache-Control ヘッダーが失われ、次が含まれるようになりました。
X-Cache: MISS from pseud.ony.ms
304 応答または少なくともキャッシュ ヒットを確認したいときは、ブラウザーを更新するときでも。
ああ、Apache が X-Forwarded-For を Plausible に送信していることを確認できる方法はありますか?
ありがとう!