一周前,我在 Apache httpd-users 邮件列表上发布了这个问题,那里没有回复。从那以后,我做了更多的工作,所以我希望我能在这里得到一些帮助,谢谢!
在我的 Apache 虚拟主机中,我有一个适用于特定 URL 的反向代理。我的用例:我将 plausible.io 用于尊重隐私的网络统计数据。请参阅Plausible 关于代理需求的讨论。这是我的配置的那一部分:
SSLProxyEngine on
ProxyPass "/api/event" "https://plausible.io/api/event"
ProxyPass "/p.js" "https://plausible.io/js/plausible.js"
这是我网站上的位置,提供来自 Plausible 的 Javascript: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,以便他们可以正确地定位 IP 地址?
谢谢!