サイトアイコン APPSWINGBY Developers Blog

413 Request Entity Too Largeが表示された時の対処方法

以前、multipart/form-dataを使ったファイルアップロードについて紹介しました。ファイルアップロードするプログラムをkuberntesのクラスタで動作させていた際に413 Request Entity Too Largeというエラーが発生した際の対処方法について紹介したいと思います。

稼働環境

発生時の環境は、Docker for Desktopのkubernetesを使って環境構築していました。

Ingressは、ingress-nginxを利用しています。

Nginxをプロキシとして稼働している場合

nginxをプロキシして動作させている場合の対処方法について、紹介します。下記は、nginxの設定ファイル例です。

server {
  listen 80;
  server_name example.com;
  root /var/www/html/example;
  index index.php index.html;
  client_max_body_size 10m;
  ・・・
}

上記例は、client_max_body_sizeを各サーバー設定の中に書き込みましょう。
10mというのは10メガバイト、という意味です。もっと容量を大きくしたい場合は各自変更するか、0を設定することで上限なしとすることができます。

Ingress-nginxの場合

ingress-nginxの場合は、Annotationsを使って制御を行います。

nginxのclient_max_body_sizeに対応するものnginx.ingress.kubernetes.io/proxy-body-sizeに当たります。ingressのマニュフェスト例は、下記のようになります。

apiVersion: "networking.k8s.io/v1"
kind: Ingress
metadata:
  name: sample-local
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
spec:
  rules:
  - http:
      paths:
      - path: /(.*)
        pathType: Prefix
        backend:
          service:
            name: sample-web
            port:
              number: 80

この設定をすると413エラーがなくなります。他のパブリッククラウドのIngressでも似たような項目があるので、413エラーで引っかかった場合には、Ingressの仕様について確認すると良いかもしれません。

モバイルバージョンを終了