什么是使用通配符HTTP请求 Nginx 清除缓存的实际方法?

首先,我查找并尝试了一些文章:

1) https://www.ryadel.com/en/nginx-purge-proxy-cache-delete-invalidate-linux-centos-7/

在第一种方法中:

a) 通过 curl 请求(bypass)更新缓存,它适用于我,但没有示例可以使用通配符更新缓存

b) 使用过时模块 ngx_cache_purge-2.3 通过使用 PURGE 方法的 curl 请求删除缓存,但没有示例可以使用通配符更新缓存,且至少按照文章中所示的配置对我无效(nginx 1.14):

curl -X PURGE -I mysite.com/text.txt

curl: (52) Empty reply from server

2) https://scene-si.org/2016/11/02/purging-cached-items-from-nginx-with-lua/; https://gist.github.com/titpetric/2f142e89eaa0f36ba4e4383b16d61474/revisions

在第二种方法中:

如果我理解正确,lua 需要 nginx 版本 1.10,我的是 v1.14,没有 lua 模块可用于 v.1.14。

nginx: [emerg] module "/usr/lib64/nginx/modules/ngx_http_lua_module.so" version 1010001 instead of 1014000 in /etc/nginx/nginx.conf:1

所以我的问题是:您能提出适用于 Nginx v1.14 通过 通配符 HTTP 请求清除缓存的工作方法吗?

此致 敬礼

点赞
用户2336071
用户2336071

我知道这个问题有些老了。但是我目前正在使用这个 Lua 模块,它允许使用通配符:https://github.com/diego-treitos/nginx_cache_multipurge

它具有安装和使用它的所有指令。

2019-12-12 09:37:14
用户8456075
用户8456075

你应该按照以下方式添加PURGE,那么问题就会解决。

if ($request_method !~ ^(GET|HEAD|POST|PURGE)$ ) {
        return 444;
}
2020-01-03 13:27:43