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?

Quintin Par
  • 4,293
  • 10
  • 46
  • 72

1 Answers1

11

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

kolbyjack
  • 7,854
  • 2
  • 34
  • 29
  • 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 01 '11 at 13:19
  • It didnt fix the problem.. – Quintin Par Nov 01 '11 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 01 '11 at 16:02
  • This answer actually works and is also found on Nginx forum. More here: http://serverfault.com/a/736920/297653 – Hieu Nov 17 '15 at 08:35