Hi,
We faced the same issue lately.
After hanging around, we found that the root cause was the default behavior of the proxy_cache, which converts the HEAD method to GET.
As docker push relies on some HEAD calls (see https://docs.docker.com/registry/spec/api/#pushing-an-image), it fails.
The following post helped us to fixed our configuration: https://serverfault.com/questions/530763/nginx-proxy-cache-key-and-head-get-request/626330
See also http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_convert_head
HTH
We faced the same issue lately.
After hanging around, we found that the root cause was the default behavior of the proxy_cache, which converts the HEAD method to GET.
As docker push relies on some HEAD calls (see https://docs.docker.com/registry/spec/api/#pushing-an-image), it fails.
The following post helped us to fixed our configuration: https://serverfault.com/questions/530763/nginx-proxy-cache-key-and-head-get-request/626330
See also http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_convert_head
HTH