2

I have a page in nginx as follows

location = /page {
    proxy_pass http://localhost:82;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_hide_header Set-Cookie;
    access_log off;
    add_header Cache-Control public;
    add_header X-Cache-Status $upstream_cache_status
    proxy_cache             page;
    proxy_cache_key         backend$request_uri;
    proxy_cache_valid       200 302 100d;
    proxy_cache_valid       404      1m;
    proxy_cache_use_stale   error timeout invalid_header;
}

With the cache setting as follows

proxy_cache_path  /tmp/nginx/cache  levels=1:2 keys_zone=page:10m inactive=7d  max_size=50m;

But this page always returns a miss

enter image description here

What could be wrong?

1 Answer 1

11

If your backend responses have a Set-Cookie header, you need proxy_ignore_headers Set-Cookie; instead of proxy_hide_header Set-Cookie;

4
  • Could you please explain the downvote? OP has proxy_hide_header Set-Cookie, so it wouldn't appear in the response headers sent back to the client even if the upstream sets it, but afaict, unless you tell nginx to actually ignore the header, it will still mark the response as not cacheable.
    – kolbyjack
    Nov 1, 2011 at 13:19
  • It didnt fix the problem.. Nov 1, 2011 at 15:45
  • Is there anything in the error log? You could also try telling nginx to ignore Cache-Control, but it should be handling that properly.
    – kolbyjack
    Nov 1, 2011 at 16:02
  • This answer actually works and is also found on Nginx forum. More here: serverfault.com/a/736920/297653
    – Hieu
    Nov 17, 2015 at 8:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.