Avoid cache on zero-bytes-returned?

AJ Weber aweber at comcast.net
Wed Mar 13 14:15:48 UTC 2013

I have a case where a user requires authorization to retrieve content.  
Ngnix correctly returns the tomcat's 401, and then the user attempts 

However, if the user fails to authenticate, tomcat returns a 200 but 
zero bytes returned.  This comes through nginx as a cache-miss, 
status=200, 0 bytes returned.

Unfortunately, if the user tries again, even if he/she is successful, 
the 200 result is cached for my 10min cache setting for 
200-results...thus, even a correct login will not return the content for 
at least 10min due to the cached, zero-byte page.

Is there a way to leave my default caching enabled, but tell nginx to 
NOT cache zero-byte results?  If the correct content is available in the 
cache, I want it returned without going to the back end, but in my case 
(at least), a zero-byte result for a status=200 is not valid.

Thanks for any tips or tricks!

More information about the nginx mailing list