我有通常
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=drupal:16m;
proxy_cache_key "$scheme$host$request_uri";
建立代理缓存。我应该如何配置 nginx 以允许通过 HTTP 请求从缓存中删除特定项目?
答案1
如果你尝试在Drupal那么我建议你阅读这篇文章,因为它有点长。
这里总结一下主要步骤:
- 确保您的 Nginx 服务器上安装了 ngx_cache_purge 模块。
- 还必须在您的服务器上安装 php-curl 模块(Debian/Ubuntu 的 php5-curl)。
- 通过 fastcgi 缓存路径定义要使用的缓存
使用以下代码更改处理 Drupal 请求的服务器位置:
location = /index.php { include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /var/www/$host/drupal/index.php; fastcgi_hide_header X-Drupal-Cache; #optional fastcgi_hide_header Etag; #optional fastcgi_pass php; # Cache Settings set $nocache ""; if ($http_cookie ~ SESS) { #logged in users should bypass the cache set $nocache "Y"; } if ($request_uri ~ \? ) { # Purge doesn't handle query strings yet set $nocache "Y"; } fastcgi_cache mycache; fastcgi_cache_key $host$request_uri; fastcgi_cache_valid 200 301 1d; fastcgi_ignore_headers Cache-Control Expires; fastcgi_cache_bypass $nocache; fastcgi_no_cache $nocache; add_header X-nginx-Cache $upstream_cache_status; #optional expires epoch; }
创建一个在本地主机接口上监听随机端口的新服务器。
- 启用清除和过期模块并将 admin/settings/purge 处的代理 URL 设置为
"http://127.0.0.1:8888"
。
大功告成!!
文章来源:nginx 缓存与选择性页面清除