nginxというWebサーバーをご利用の方で「413 request entity too large」というエラーメッセージが出てしまって、困っている方はいませんか?
nginxとは、現在世界で最も普及している高機能なWebサーバーです。これは、基本となるオープンソースサーバー本体に加え、負荷分散・セキュリティ・アプリケーション開発のベースなどが用意されており、とても便利なので、利用者が増えてきています。このようなWebサーバーでは、先述のエラーメッセージをとてもよく見かけることで知られていますが、実はとても単純なエラーなのです。
ですから、本記事を一度読んで頂ければ、その原因と対処法について、すぐに理解できます。
413エラーの意味とは?
413エラーの意味は、ファイルを送信した場合など、リクエストの本体であるアップロードするコンテンツのデータサイズが、サーバーが許容するサイズ上限を超えてしまったことを表しています。何Webサーバーがリクエストを拒否したときに返信されるHTTPエラーの1つです。(アプリによっては1mb、2mb以上のように制限のある環境もあります)PCでアップロードできるのにスマホ(スマートフォン)で413エラーが出る場合もあります。
どんなブラウザでも、Webブラウザとして作られているものであれば共通のエラー番号として表示します。エラーが413番で同じブラウザであれば、常に同じメッセージが表示されるので、インターネットで情報を検索しやすいです。
ステータスコードは以下の記事でも解説しています。
400番台エラーは主にクライアント側のリクエストエラーを表しています。
400番台エラーは以下の記事でも解説しています。
400 Bad Request
401 Unauthorized
403 Forbidden
404 not found
410 gone
413 request entity too large
「413 request entity too large」の意味
「413 request entity too large」という英文の意味は、ステータスコードが413番で、「リクエストの実体が大きすぎる」という意味です。こうしたエラーメッセージは定型的なものです。
「リクエストエンティティが大きすぎる」
request entity too largeを直訳すると「リクエストエンティティが大きすぎる」となります。エンティティとは、聞きなれない単語ですがデータの実体などと訳されます。
「413 Payload Too Large」
エラーコード413には「413 Payload Too Large」と表記される場合もあります。payloadとは荷物という意味で、直訳すると「リクエストエンティティが大きすぎる」という意味で413エラーであることは同じです。
Chrome「413. That's an error.」とは
Chromeの「413. That’s an error.」とは、やはりHTTP通信における413エラーなので、起きている事象は先述のnginxと同じです。説明文の表現の仕方が違うだけです。
413. that’s an error. your client issued a request that was too large. that’s all we know.
「413. that’s an error. your client issued a request that was too large. that’s all we know.」という英語の意味は、直訳すると、「413.これはエラーです。あなたのクライアントは大きすぎるリクエストを発行しました。我々にわかるのはそれだけです。」という意味です。
起きているエラーの意味は、既に説明した通り、Chromeからのリクエストのデータサイズが、サーバーの受け入れサイズよりも大きすぎる場合です。Chromeはこのメッセージを表示します。
「413. That's an error.」の対処法
「413. That's an error.」の対処法は、データサイズを小さくすることです。413エラーはリクエストのサイズが大きすぎるのですから、分割・圧縮など、データサイズを小さくすることで対処します。具体的には、以下の方法が考えられます。
①ファイルを分割する
②画像・動画の圧縮率を上げる
例えば、画像や動画ファイルは、画質によってファイルサイズが大きく異なるので、このエラーが発生しやすいです。
送信可能な上限サイズは、マニュアルに必ず書いてあります。文字データを送る場合は、あまりにも長大な文章を送らないように注意しましょう。
nginxで413エラーが出る原因
nginxで413エラーが出る原因を解説します。Chromeについては先に説明しました。その他のブラウザも、説明文が多少違いますが、起きている事象とエラー番号は同じです。今度は、サーバー側での原因と対処法について解説します。
nginxとは
nginxとは、事業向けの高度な機能を備えたWebサーバーです。
世界で最も利用されている人気サービスです。
webサーバーなのでWordpressの追加にも対応しています。nginxで追加したWordpressであればテーマや投稿(post)をアップロードすると413エラーが発生する可能性があります。
nginxによくあるエラーは以下でも解説しています。
413エラーの原因
413エラーの原因は、先述のChromeの場合と同じで、送信したファイルサイズが大きすぎることです。413エラーが定義されているHTTPプロトコルは、国際規格の仕様なので、メーカーが異なる製品の間であっても共通のものなのです。
nginxで413エラーが出る場合の対処法
nginxで413エラーが出る場合の対処法を簡単に説明します。ここまでの内容で、ユーザー側の対処法を解説したので、ここからはサイト管理者がサーバーの設定を変更して、データサイズの大きなリクエストの許容値を増やす対処法ができるか確認しましょう。
client_max_body_sizeの設定
client_max_body_sizeの設定値をより大きな値に修正すれば、この問題が解決できます。手順は以下の通りです。
①設定ファイルを開く
まず設定ファイルを開きましょう。Linux系OSの場合、「/etc/nginx/nginx.conf」ファイルを開きます。
②client_max_body_sizeの設定
client_max_body_sizeの設定値をより大きな値に修正します。受け入れるべきサイズは何を許容するかによりますので、それぞれの場面に適した値を指定しましょう。
例えば、「100M」と指定した場合は、「100メガバイト」のリクエストサイズを受け入れることになります。コーディング例は以下の通りです。末尾のセミコロンを忘れやすいので注意しましょう。
こういう細かいところの表記ミスをしないことが、ストレスなく設定作業を完了する小さなコツです。
server {
client_max_body_size 100M;
・・・
}
初期値が1Mバイトなので、導入当初は発生しやすいエラーです。0に設定すると上限なしにできますが、危険なのでやめましょう。
③nginxを再起動
nginxを再起動すれば、前項の設定が反映されます。
まとめ
nginxはオープンソースで高機能なWebサーバーです。ソースコードが入手できるので、商用利用だけでなく、学習目的でも大きな価値がある製品です。Webサーバーですから、最も基本的な通信はHTTPです。
HTTPは、ネットサーフィンのための通信方法を定めた国際標準規格で、WebサーバーおよびWebクライアントは、お互いにこれに従っています。だからこそ、様々なメーカーの製品同士であるにも関わらず問題なく意思疎通ができるわけです。
つまり、HTTPリクエストに関する理解は、様々な製品について同時に理解が深まるという意味でもあるわけです。ですから、各製品のマニュアルだけでなく、その背後にある国際標準規格についても理解を深めることがスキルアップのために重要ですので、ぜひ取り組んでみてください。
そうすれば、さらに将来新しいWebサーバーが現れたとしても、また速やかに理解することができます。