我使用nginx作为反向代理来连接api。问题是当我在添加或删除内容后发送查询时。 Nginx给我发送了旧的json值。我试图禁用缓存,但无法正常工作。
我的nginx配置:
location / {
sendfile off;
add_header Last-Modified $date_gmt;
add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
if_modified_since off;
expires off;
etag off;
proxy_no_cache 1;
proxy_cache_bypass 1;
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTPS $https;
}
我尝试了没有nginx的查询,并且在控制台中一切正常
谢谢!
答案 0 :(得分:0)
根据文档proxy_cache,您必须替换
proxy_no_cache 1;
proxy_cache_bypass 1;
proxy_no_cache 和 proxy_cache_bypass 定义了不将响应保存到缓存的条件。
然后要禁用缓存,可以用
替换这两个条件关闭代理缓存;
这里有一个完整的示例,可用于为无状态api服务器配置代理
location /myapi {
# Proxy
proxy_set_header X-Localhost true;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/myapi;
proxy_redirect off;
proxy_buffers 32 16k;
proxy_busy_buffers_size 64k;
proxy_cache off;
# Headers for client browser NOCACHE + CORS origin filter
add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
expires off;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept' always;
allow all;
}