09/26/2018, 11:39 PM GMT+9

Cloudflare下のDocker Registryで413エラー

tl;dr

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 エラーは解決する。


Cosnomi
Cosnomi

コンピュータ(Web, 機械学習など)が好きな医学部生

Twitter / GitHub