413 Payload Too Large
HTTPリクエストのボディサイズが制限を超えた場合のエラー
概要
HTTPリクエストのボディサイズがサーバーの設定した制限を超えた場合に返されるステータスコードです。ファイルアップロードや大きなJSONデータの送信時によく発生します。
エラーメッセージ
HTTP/1.1 413 Payload Too Large
HTTP/1.1 413 Request Entity Too Large
nginx: client intended to send too large body
原因
- ファイルサイズ超過: アップロードファイルが制限を超えている
- JSONボディが大きい: POSTリクエストのボディが大きすぎる
- Base64エンコード: 画像をBase64でエンコードしてサイズが増大
- サーバー設定: Nginx/Apache/アプリケーションの制限
- CDN/プロキシ: CloudFrontやCloudflareの制限
解決策
1. Nginxの設定
| |
2. Apacheの設定
| |
3. Express.jsの設定
| |
4. Laravelの設定
| |
5. AWS API Gateway
| |
6. クライアント側で分割アップロード
| |
7. S3署名付きURLを使用
| |
8. 圧縮して送信
| |
各サービスの制限
| サービス | デフォルト制限 |
|---|---|
| Nginx | 1MB |
| Apache | 無制限(PHPは2MB) |
| Express.js | 100KB |
| API Gateway | 10MB |
| CloudFront | 20MB(Lambda@Edge連携時) |
| Cloudflare | 100MB(プランによる) |
よくある間違い
- Nginxとアプリケーション両方の設定を変更し忘れる
- Base64エンコードでサイズが約33%増加することを忘れる
- CDN/プロキシの制限を見落とす
- 複数のミドルウェアで制限がかかっている
関連エラー
参考リンク
HTTP の他のエラー
この記事は役に立ちましたか?