有一台原本使用 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 的設定檔:
- # vi /etc/nginx/nginx.conf
在 http {} 段落裡面, 加入以下一行, 將 client_max_body_size 的限制改成 20MB:
client_max_body_size 20M;
即改成類似這樣:
http { ... # set request body size to 20MB client_max_body_size 20M; ... }
在 vi 儲存檔案及離開:
:wq
最後重新載入 Nginx 便完成了:
- # systemctl reload nginx
转载请注明:我是IT » Nginx 錯誤: client intended to send too large body