开发NGINX缓存原始URI导出模块:问询Plus/OSS内存存储情况
需求说明
我正在开发一个模块,用于展示NGINX中缓存内容的原始URL。例如,当/media/image.jpg被重复请求并由NGINX代理缓存后,希望有一个端点在被请求时,导出所有活跃缓存的URI元数据,格式如下:
{md5: SG...A32, uri: "/media/image.jpg"} {md5: DF...AB4, uri: "/media/image2.jpg"}
对我而言,获取原始未哈希缓存键也可满足需求——默认配置为:
proxy_cache_key $scheme$proxy_host$request_uri;
遇到的问题
初步研究NGINX源码后,我推测NGINX开源版(OSS)的内存中并未存储此类信息。但由于NGINX Plus支持通配符清除功能,我认为它肯定在内存某处存储了这些信息(以便进行正则搜索实现通配符清除)。
我未找到任何文档确认NGINX Plus是否在内存中保留原始缓存键(或URI),也不清楚如何在动态加载模块中访问该信息。
已尝试的方案
- 我开发了一个模块,可导出缓存共享内存的以下字段:
{"zone":"mycache","md5":"c510b260709c96464511de161764e0aa","mem":84,"disk":342992,"uses":5,"expire":1745848168}
(注:disk大小并非由NGINX存储,我在模块中通过手动调用stat获取。)
- 我知晓原始URL存储在磁盘上对应的缓存文件中,但读取大量独立文件对生产环境而言成本过高。
- 我还生成了NGINX进程的核心转储文件(
gcore)并搜索字符串,确实在内存中找到了原始URL,但我认为这些只是请求内存的残留(过期数据),无法以一致的方式访问。
内容的提问来源于stack exchange,提问作者isa türk
相关产品推荐
相关产品推荐

