nginx proxy_hide_header 仍然缓存标头

nginx proxy_hide_header 仍然缓存标头

我使用 nginx 和 proxy_cache 来缓存一些页面,我设置了一个单独的刷新位置块来刷新特定的缓存条目。我已经测试过了,它可以很好地进行刷新。

但是它还会缓存 set-cookie 标头(我使用的框架 Symfony 始终会为新用户创建新的会话 cookie,即使他们未登录)。我搜索了一下,显然 proxy_hide_header 应该可以帮我解决这个问题,但它只会隐藏返回给客户端的最终响应的标头,标头仍然被缓存。我也尝试对其他标头执行此操作,结果相同。我也尝试使用 headers_more_module(more_clear_headers),但这也无济于事。有人知道这里的问题是什么吗,或者有我正在尝试做的替代方法吗?我使用的是 nginx 1.11.2,这是配置:

location ~ /refresh(/.*) {
    allow 127.0.0.1;
    deny all;

    rewrite ^/refresh?(/.*)$ $1 break;

    proxy_hide_header "Set-Cookie";
    proxy_ignore_headers "Set-Cookie" "Vary";

    proxy_cache FOS_CACHE;
    proxy_pass http://localhost:8080;
    proxy_set_header Host $host;
    proxy_cache_key $uri$is_args$args;
    proxy_cache_valid 200 1m;

    proxy_cache_bypass 1;

    access_log /var/log/nginx/cache_refresh.log cache_info;
}

谢谢

答案1

以下是一个想法。它能解决你的问题吗?

if ($http_cookie ~ "*"){
  set $no_cache 1;
}
proxy_cache_bypass $no_cache;

相关内容