Greetings, Let assume that I would like behavior on LB from the backend and force it to cache only resposnes that have a X-No-Cache header with value NO.
Nginx should cache a response with any code, if it has such headers. This works well until the backend is unavailable and nginx returns a hardcoded 502 that doesn't have a control header, but such a response is cached anyway. Here is the config that allows to reproduce the issue: http { default_type application/octet-stream; proxy_cache_path /tmp/nginx_cache keys_zone=the_zone:1m; proxy_cache the_zone; proxy_cache_valid any 15m; proxy_cache_methods GET HEAD POST; add_header X-Cache-Status $upstream_cache_status always; map $upstream_http_x_no_cache $no_cache { default 1; "NO" 0; } proxy_no_cache $no_cache; upstream echo { server 127.127.127.127:80; } server { listen 1234; server_name localhost; location / { proxy_pass http://echo; } } } when I run: curl -D - http://127.0.0.1:1234/ it returns MISS on the first request, and HIT on the second one. Here I expect both requests to return MISS. -- wbr, Kirill _______________________________________________ nginx mailing list nginx@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx