通过 HTTP 请求清除 nginx 缓存?

通过 HTTP 请求清除 nginx 缓存?

我有通常

    proxy_cache_path        /data/nginx/cache levels=1:2 keys_zone=drupal:16m;
    proxy_cache_key         "$scheme$host$request_uri";

建立代理缓存。我应该如何配置 nginx 以允许通过 HTTP 请求从缓存中删除特定项目?

答案1

如果你尝试在Drupal那么我建议你阅读这篇文章,因为它有点长。

这里总结一下主要步骤:

  1. 确保您的 Nginx 服务器上安装了 ngx_cache_purge 模块。
  2. 还必须在您的服务器上安装 php-curl 模块(Debian/Ubuntu 的 php5-curl)。
  3. 通过 fastcgi 缓存路径定义要使用的缓存
  4. 使用以下代码更改处理 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;
    }
    
  5. 创建一个在本地主机接口上监听随机端口的新服务器。

  6. 启用清除和过期模块并将 admin/settings/purge 处的代理 URL 设置为"http://127.0.0.1:8888"

大功告成!!

文章来源:nginx 缓存与选择性页面清除

相关内容