Hello! On Mon, May 04, 2015 at 07:52:46AM -0400, philipp wrote:
> Hi Maxim, > should this solution work? > http://syshero.org/post/49594172838/avoid-caching-0-byte-files-on-nginx > > I have created a simple test setup like: > > map $upstream_http_content_length $flag_cache_empty { > default 0; > 0 1; > } > > server { > listen 127.0.0.1:80; > > server_name local; > > location /empty { > return 200 ""; > } > location /full { > return 200 "full"; > } > } > > server { > listen 127.0.0.1:80; > > server_name cache; > > location / { > proxy_pass http://127.0.0.1; > proxy_cache_valid 200 404 1h; > proxy_no_cache $flag_cache_empty; > proxy_cache_bypass $flag_cache_empty; Removing proxy_cache_bypass should fix things for you. The problem is that proxy_cache_bypass will be evaluated before a request is sent to upstream and therefore before $upstream_http_content_length will be available. As a result $flag_cache_empty will be always 0. And, because map results are cached for entire request lifetime, proxy_no_cache will see the same value, 0. -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx
