Nginx 錯誤: client intended to send too large body

有一台原本使用 Apache 的 Web Server 換成 Nginx 後, 其中一個 PHP 的上傳檔案程式遇到錯誤, 原本以為是 PHP 的 max_execution_time 或 max_upload_filesize 設定太小出問題。

後來在 Nginx 的 Log 找到以下錯誤:

client intended to send too large body: xxxxxxx bytes

出現這個錯誤是因為 Web Server (Nginx) 可以接收的 request body 太小, 上傳的檔案超出了限制所致。

Apache 的 LimitRequestBody 預設是 0, 即無限制, 但 Nginx 的 client_max_body_size 預設是 1MB, 即上傳超過 1MB 檔案便會出現問題。


要解決這個問題, 需要開啟 Nginx 的設定檔修改 client_max_body_size, 先開啟 Nginx 的設定檔:

/linux/nginx-config-file

  • # vi /etc/nginx/nginx.conf

在 http {} 段落裡面, 加入以下一行, 將 client_max_body_size 的限制改成 20MB:

client_max_body_size 20M;

即改成類似這樣:

在 vi 儲存檔案及離開:

:wq

最後重新載入 Nginx 便完成了:

/linux/reload-nginx

  • # systemctl reload nginx


你可能感興趣的內容:
Tags:,

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.