如何删除单个nginx缓存文件?

ima*_*tar 6 nginx cache

当访问 http://example.com/ 为空白但与 http://example.com/index.php 配合良好时,我需要删除 http://example.com/ 的 nginx 缓存文件,该怎么做?这是我的 nginx 缓存配置。

    fastcgi_cache_path  /backup/cache levels=1:2 keys_zone=my-cache:1000m inactive=1000m;
    fastcgi_temp_path /backup/cache/tmp 1 2;
    fastcgi_cache_key "$scheme://$host$request_uri";
Run Code Online (Sandbox Code Playgroud)

如何获取/backup/cache 文件夹中的缓存文件名?

cad*_*dmi 12

例如,一种方法,但非常灵活

将此行添加到 nginx.conf ...

proxy_cache_bypass $http_x_update;
Run Code Online (Sandbox Code Playgroud)

...并且您可以随时使用带有“magic”标头的简单 http 请求更新缓存中的任何 uri。例如

curl -s -o /dev/null  -H "X-Update: 1" mydomain.com
Run Code Online (Sandbox Code Playgroud)

或者

curl -s -o /dev/null  -H "X-Update: 1" mydomain.com/some/long/url/
Run Code Online (Sandbox Code Playgroud)

对于偏执狂的安全性和满意度:D,您可以将标题名称更改为任何 blablabla,例如

proxy_cache_bypass $http_x_gangnamstyle;
#proxy_cache_bypass $http_x_mycatsnickname;
#proxy_cache_bypass $http_x_b2ca678b4c936f905fb82f2733f5297f;
Run Code Online (Sandbox Code Playgroud)

curl -s -o /dev/null  -H "X-GangnamStyle: 1" mydomain.com
curl -s -o /dev/null  -H "X-mycatsnickname: 1" mydomain.com
curl -s -o /dev/null  -H "X-b2ca678b4c936f905fb82f2733f5297f: 1" mydomain.com
Run Code Online (Sandbox Code Playgroud)

  • 这不会删除任何内容,它只是帮助您绕过缓存。您的用户仍然会看到缓存的版本。此外,该 curl 命令已经具有“silent”标志,为什么要尝试将输出保存到“/dev/null”?这是没有意义的。 (4认同)