Nginx 0.67 忽略上游代理的 Cache-Control: no-cache

Nginx 0.67 忽略上游代理的 Cache-Control: no-cache

我想为来自我的 (Pylons) 上游服务器的某些响应指定不缓存,以避免用户在注销后能够访问缓存的内容。为此,我根据 nginx 文档返回一个 no-cache 标头。具体来说,这一个:

Cache-Control: max-age=0, must-revalidate, no-cache, no-store

Nginx 无论如何都会返回缓存的响应,忽略我的标头。有什么想法吗?

谢谢,里克

答案1

nginx 更新日志0.7.48 提到了一个错误修复:

错误修复:现在 nginx 会考虑后端响应中的“X-Accel-Expires”、“Expires”和“Cache-Control”标题行。

答案2

也许你使用了 proxy_ignore_headers:

proxy_ignore_headers "Cache-Control" "Expires";

注释或者删除该字符串。

答案3

不,根本不使用该指令。这是配置:

worker_processes  1;

error_log  logs/error.log;
pid        logs/nginx.pid;

events {
  worker_connections  1024;
}

http {
  include       mime.types;
  default_type  application/octet-stream;

  access_log  logs/access.log;

  sendfile        on;

  keepalive_timeout  65;
  tcp_nodelay        on;

  gzip  on;
  gzip_disable "MSIE [1-6]\.(?!.*SV1)";
}
server {
    listen       80;
    server_name  site.com;
    server_name_in_redirect off;
    client_max_body_size 11M;


    location ^~ /members/ {
             proxy_pass http://127.0.0.1:5010;
    }

    location ^~ /login/ {
             rewrite ^ https://$host$request_uri permanent;
    }


    error_page    404  /error/404.html;
    error_page    500 502 503 504  /error/500.html;
}

答案4

我将使用“private”选项进行缓存控制,另一方面,除非您指定 proxy_cache 配置选项,否则 nginx 不会缓存,您确定缓存是在 nginx 中完成的吗?

相关内容