我正在尝试编写一个使 nginx 上的缓存无效(并且不会重新预热缓存)的过程。
默认情况下,nginx 的缓存文件数量为 700。我能找到的最接近的设置是:
proxy_store_access user:rw group:rw all:r;
但是,这适用于代理存储,而不是缓存。
那么,我该如何告诉 nginx 将缓存文件创建为 777?
我目前正在 ubuntu 12 上运行 nginx/1.5.8。
答案1
好的,那么,回答您的具体问题,您需要将 umask 设置为 000。如果您愿意,我可以为您提供这些说明。但我不认为这是您想要的。说真的。
顺便说一句,proxy_store_access 配置会影响 proxy_store 和 proxy_cache 系统创建的文件(我在源代码中检查了这一点)。
我无意无礼,但我认为你不想做你建议的事情。我怀疑你想定期清理你的 nginx 缓存。如果你看看这里的文档:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path您将会看到 nginx 应该处理使您的缓存无效的问题,以将其保持在一定大小以下。
现在,如果您仍然想编写一个使缓存无效(我假设您的意思是删除)的过程,这里有一个不同的选项。如果要将其作为 cronjob 运行,请将其放入 nginx 用户的 crontab 中。此外,还有几种方法可以使用 sudo 为某人提供有限的访问权限。最后,如果您真的在编写一个特殊程序,请查看可执行文件中的 setuid(又名 suid)位。
祝你好运。这有帮助吗?
答案2
无论如何,这一点都是没有意义的。
根据这个答案和来自 Igor Sysoev 的论坛帖子(nginx 的作者),由于共享内存的存在,单独删除缓存文件不足以清除缓存。
因此,我放宽了我的一个要求,并允许通过预热来清除缓存。我现在使用标头发出 https 请求Pragma: no-cache
。
理想情况下,我不需要预热它就可以清除缓存。但是,我没有只清除给定 URI 缓存的解决方案。