Cloudflare経由のアップロードには容量の制限があるようです。
本文
Docker RegistryのサーバーのDNSにCloudflareを使っていたのですが、413エラーが出てしまいました。413エラーは大抵の場合、nginxの設定で client_max_body_size
を大きくすると解決するはずなのですが、今回は設定ファイルを見てみても適切に設定されていましたし、nginxのログを見てもエラーが出ている様子はありませんでした。ということは、その前でのエラーが考えられます。
もしやCloudflareが原因かと思って調べてみると、How can I change the client maximum upload size?
このようなページが見つかりました。これによると、Cloudflareの無料プランではアップロードファイルの容量は最大100MBのようです。有料版だと気にしなくても良いほど増えるのかと思いきや、Enterpriseでも500MB…Cloudflareのサーバーを経由しないグレーアイコンの設定(DNS only)だとこの制限は適用されないので、回避する場合はそのようにすればよいでしょう。
確かに、Cloudflareは主にCDNとして用いられており、大容量ファイルのアップロードはその用途からは外れますが、中にはDDoSを避けるために利用している人もいるかと思います。この制限を回避するためにはCloudflareによるIPアドレス隠蔽を無効にしなければならず、DDoSのリスクが高まるという点で、少し困る人もいるかも知れません。
まとめ
Cloudflareを経由しないように設定(DNS only; 灰色のアイコン)すれば、アップロードサイズの上限が適用されなくなり、413エラーは解決する。