@@ -252,6 +252,9 @@ echo "Docker configured with HTTPS_PROXY=$scheme://$http_host/"
252252 proxy_ignore_client_abort on;
253253 proxy_cache_revalidate on;
254254
255+ # Avoid conversion of HEAD method to GET
256+ proxy_cache_convert_head off;
257+
255258 # Hide/ignore headers from caching. S3 especially likes to send Expires headers in the past in some situations.
256259 proxy_hide_header Set-Cookie;
257260 proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;
@@ -278,13 +281,15 @@ echo "Docker configured with HTTPS_PROXY=$scheme://$http_host/"
278281 # For blob requests by digest, do cache, and treat redirects.
279282 location ~ ^/v2/( .*) /blobs/sha256:( .*) {
280283 set $docker_proxy_request_type "blob-by-digest" ;
284+ set $cache_key $request_method$2 ;
281285 include "/etc/nginx/nginx.manifest.common.conf" ;
282286 }
283287
284288 # For manifest requests by digest, do cache, and treat redirects.
285289 # These are some of the requests that DockerHub will throttle.
286290 location ~ ^/v2/( .*) /manifests/sha256:( .*) {
287291 set $docker_proxy_request_type "manifest-by-digest" ;
292+ set $cache_key $request_method$uri ;
288293 include "/etc/nginx/nginx.manifest.common.conf" ;
289294 }
290295
@@ -297,6 +302,7 @@ echo "Docker configured with HTTPS_PROXY=$scheme://$http_host/"
297302 # Since these are mutable, we invalidate them immediately and keep them only in case the backend is down
298303 location ~ ^/v2/( .*) /blobs/ {
299304 set $docker_proxy_request_type "blob-mutable" ;
305+ set $cache_key $request_method$uri ;
300306 proxy_cache_valid 0s ;
301307 include "/etc/nginx/nginx.manifest.stale.conf" ;
302308 }
@@ -322,7 +328,8 @@ echo "Docker configured with HTTPS_PROXY=$scheme://$http_host/"
322328 proxy_cache $cache ;
323329 # But we store the result with the cache key of the original request URI
324330 # so that future clients don't need to follow the redirect too
325- proxy_cache_key $original_uri$slice_range ;
331+ proxy_cache_key $cache_key$slice_range ;
332+ add_header X-Docker-Registry-Proxy-Cache-Key-Status "$cache_key$slice_range" ;
326333 }
327334
328335 # by default, dont cache anything.
0 commit comments