http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_convert_head
W dniu 04.03.2021 o 15:03, Señor J Onion pisze: > I use nginx as a forward proxy, with content caching. > > My app first performs a HEAD request to a Google Cloud Storage object. Then > it may perform a GET request to the same object. > > The HEAD request (which comes first) causes a cache MISS. The content body > length returned to the client is 0 (which is obviously correct). > > However, I think that the actual object is still included in the body from > the upstream response. The reason I believe why the object gets added to the > HEAD response from the upstream service (GCS) is for two reasons: > > a) When I subsequently do the GET request, I don't get a cache MISS (even > though this is my first GET request to that object), but a cache REVALIDATED. > The response from the upstream service is just a 304 with no body saying the > cached object is still valid ($upstream_header_time and > $upstream_response_time are identical == 0.421, which would then be correct > if the cached object is still valid). > So - this seems like the initial HEAD request cached the response also as a > GET request with the body of the object that seemed to have been in the HEAD > request > > b) Also, when I do the initial HEAD request, I can see that the > $upstream_header_time==0.832, and the $upstream_response_time==2.459 ... If > it's a HEAD request there really shouldn't be a body, so I would expect both > $upstream_header_time and $upstream_response_time to be identical. However > the 1.5sec time difference shows me that there is something in the body (even > though when the request returns to the client it all seems correct again in > terms of that the actual response.body.length is indeed 0.) > > So - the way this is working is messing with my app and HTTP analytics. I > believe this to be behaving incorrectly. > > > I don't know where the "error" lies. If it is a Google Cloud Storage bug that > it passes along the object in the body of the HEAD request, or whether the > issue lies with nginx, or with my configuration, or whether it is with the > content caching part of nginx? > Or perhaps it is behaving exactly as it should, and there is something about > the HEAD/GET requests in combination with caching that I am not understanding. > > Any help to shed light on this strange behaviour would be greatly appreciated. > > > My server block config is as follows: > > proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=image_cache:10m > inactive=60d use_temp_path=off; > > server { > listen 3128; > > location / { > proxy_cache image_cache; > > proxy_cache_revalidate on; > > proxy_cache_lock on; > proxy_cache_lock_timeout 5s; > > proxy_ignore_headers Cache-Control; > proxy_cache_valid 200 60d; > > add_header X-Cache-Status $upstream_cache_status; > > resolver 8.8.8.8 ipv6=off; > proxy_pass http://$http_host$uri$is_args$args; > } > } _______________________________________________ nginx mailing list nginx@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx