Proxy_cache not honoring pragma/cache-control settings

Hi, from the documentation I understand that proxy_cache will NOT be
activated for pages that have pragma to “no-cache” or Cache-control to
“no-cache”, or even Expires to an old date.

I have the following in my Location settings:

proxy_cache_bypass $http_pragma $http_authorization;
proxy_no_cache $http_pragma $http_authorization;

And this at the top of my PHP pages that I do not want cached, as they
change often and for the logged in user:

header(“Cache-control: private, no-cache, must-revalidate”);
header(“Expires: Mon, 24 Sep 1997 05:00:00 GMT”); # Past date
header(“Pragma: no-cache”);

However, these pages are still being cached.

Any insight on what I am missing?

Thanks!

Posted at Nginx Forum:

On Sun, Jun 05, 2011 at 01:55:03AM -0400, pk899 wrote:

And this at the top of my PHP pages that I do not want cached, as they
change often and for the logged in user:

header(“Cache-control: private, no-cache, must-revalidate”);
header(“Expires: Mon, 24 Sep 1997 05:00:00 GMT”); # Past date
header(“Pragma: no-cache”);

“Pragma: no-cache” sent from server side means nothing.
$http_pragma means client “Pragma” header.

However, these pages are still being cached.

Any insight on what I am missing?

nginx should not cache response with such Cache-Control and Expires.
Do you have proxy_ignore_header directive ?


Igor S.

Yes I have this:

proxy_ignore_headers Cache-Control Expires;

Is this why this is happening?

Posted at Nginx Forum:

Wow, sorry, I feel stupid. I commented that line and now it works.

Thanks!!

Posted at Nginx Forum:

On Sun, Jun 05, 2011 at 02:20:24AM -0400, pk899 wrote:

Yes I have this:

proxy_ignore_headers Cache-Control Expires;

Is this why this is happening?

Yes, nginx ignores these headers in backend response.
And, as I already said Pragma means nothing.


Igor S.