我想为来自我的 (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 中完成的吗?