Nginx unexpectedly returning 304 for content cached from proxy
merlin corey
merlincorey at dc949.org
Mon Jun 8 14:28:49 MSD 2009
Please don't double post to the list and the forum.
Thanks
On Mon, Jun 8, 2009 at 2:39 AM, Antonio L.<antonio04 at gmail.com> wrote:
> Hello!
> We recently started using Nginx 0.7.59 to replace Squid on a couple of our
> static file caching servers (Debian 5.0). However, nginx is returning "HTTP
> 304 Not Modified" responses for some—not all—of the cached images, even if
> the browser doesn't send an If-modified-since header -- causing lots of
> broken images when viewing the site in browser.
> As soon as I turn off the "proxy_cache" directive and let the requests be
> proxied to the upstream server, bypassing nginx's cache, no more unexpected
> 304's are served, and the broken images disappear.
> Do you have any idea of what might be causing this problem?
> My nginx.conf file is below:
> ###
> worker_processes 3;
>
> error_log logs/error.log;
> events {
> worker_connections 10240;
> use epoll;
> }
> http {
> include mime.types;
> default_type application/octet-stream;
> access_log off;
> sendfile on;
> keepalive_timeout 10;
> gzip on;
> upstream backend {
> server xxx.xxx.xxx.xxx;
> }
> proxy_buffer_size 16k;
> proxy_buffers 8 16k;
> proxy_busy_buffers_size 32k;
> proxy_intercept_errors on;
> proxy_cache_path /var/www/cache levels=1:2
> keys_zone=zone_one:10m inactive=24h;
>
> server {
> listen 80;
> server_name localhost;
> location / {
> proxy_cache zone_one;
> proxy_cache_valid 200 7d;
> proxy_pass http://backend;
> }
> }
> }
> ###
> I added the "proxy_cache_valid" directive to only cache 200 responses, but
> that didn't seem to change anything (even after deleting the cache).
> This is pretty much what I'm seeing:
> $ curl -I http://www.myserver.com/thumbs/125x100/10081/m88_1240816236.jpg
> HTTP/1.1 304 Not Modified
> Server: nginx/0.7.59
> Date: Mon, 08 Jun 2009 09:26:05 GMT
> Connection: keep-alive
> Last-Modified: Mon, 27 Apr 2009 07:10:40 GMT
> Expires: Wed, 08 Jul 2009 08:19:13 GMT
> Cache-Control: max-age=2592000
> If I disable the proxy_cache (leaving just proxy_pass in location /):
> $ curl -I http://www.myserver.com/thumbs/125x100/10081/m88_1240816236.jpg
> HTTP/1.1 200 OK
> Server: nginx/0.7.59
> Date: Mon, 08 Jun 2009 09:28:17 GMT
> Content-Type: image/jpeg
> Connection: keep-alive
> Content-Length: 3869
> Last-Modified: Mon, 27 Apr 2009 07:10:40 GMT
> Vary: Accept-Encoding
> Expires: Wed, 08 Jul 2009 09:32:33 GMT
> Cache-Control: max-age=2592000
> Accept-Ranges: bytes
> I'm not quite sure where to start debugging this. Does anyone have any
> advice?
> Thanks,
> Antonio
>
More information about the nginx
mailing list