62 Nginx(Docker)代理层缓存清理ngx_cache_purge - xiaoxin01/Blog GitHub Wiki
Nginx商业版提供了Purger功能,对于社区版,可以使用第三方模块ngx_cache_purge来清理缓存
本文介绍如何基于官方的 Nginx docker image 来制作包含ngx_cache_purge的image,如果不使用docker image,将Dockerfile中的script稍作修改即可。
这里直接fork了一份已经做好的,将版本升级到当前最新:nginx 1.13.6, ngx_cache_purge 2.4.2
https://github.com/xiaoxin01/nginx-purge-docker/blob/master/Dockerfile
改动的内容
FROM nginx:1.13.6
ENV NGX_CACHE_PURGE_VERSION=2.4.2
# Install basic packages and build tools
RUN apt-get update && \
apt-get install --no-install-recommends --no-install-suggests -y \
wget \
ca-certificates \
zlib1g-dev \
参考:
有两种配置方式:
http {
proxy_cache_path /tmp/cache keys_zone=cache:10m;
server {
location / {
proxy_pass http://127.0.0.1:8000;
proxy_cache cache;
proxy_cache_key $uri$is_args$args;
proxy_cache_purge PURGE from 127.0.0.1;
}
}
}
对于这种方式,清除缓存的方法是使用 PURGE 命令。
比如要清除:http://localhost/lib/bootstrap/dist/css/bootstrap.css
命令如下:
curl http://localhost/lib/bootstrap/dist/css/bootstrap.css -X PURGE
http {
proxy_cache_path /tmp/cache keys_zone=cache:10m;
server {
location / {
proxy_pass http://127.0.0.1:8000;
proxy_cache cache;
proxy_cache_key $uri$is_args$args;
}
location ~ /purge(/.*) {
allow 127.0.0.1;
deny all;
proxy_cache_purge cache $1$is_args$args;
}
}
}
对于这种方式,清除方法是将资源路径加上 purge。
比如要清除:http://localhost/lib/bootstrap/dist/css/bootstrap.css
命令如下:
curl http://localhost/purge/lib/bootstrap/dist/css/bootstrap.css