解決 Nginx 錯誤: 413 Request entity too large

在 Nginx 下如果用 PHP 上傳檔案時, 有時會出現以下報錯:

Nginx 413 Request Entity Too Large

出現 Error 413 的原因是訪客瀏覽網頁時, 傳送過多的 HTTP 請求, 一般在上傳檔案時出現, 解決方法是修改 Nginx 的 上傳限制, 這個可以透過 Nginx 的 client_max_body_size 設定。

client_max_body_size 是用作設定訪客最多可以傳送多少資料, 如果訪客傳送到 Nginx 的資料超過這個限制, 便會出現 413 Request Entity Too Large 錯誤, 而這個參數的預設值是 1MB。要修改首先開啟 Nginx 的設定檔 nginx.conf:

# vi /etc/nginx/nginx.conf

或者


# vi /usr/local/nginx/conf/nginx.conf

可以在 http, server 或 location 其中一個 block 加入 client_max_body_size 設定, 例如我想改為 20MB:

儲存檔案後離開文字編輯器, 然後重新啟動 Nginx:

# service nginx reload

或者

# /usr/local/nginx/sbin/nginx -s reload

或者

# /sbin/nginx -s reload

如果出現上面問題的地方, 是 PHP 上載檔案的部份, 需要連同 PHP 的上載限制一同修改, 開啟 php.ini 檔案:

找到 upload_max_filesize, 設定為 20MB:

upload_max_filesize = 20M

找到 post_max_size, 設定為 30MB:

post_max_size = 30M

儲存檔案並離開文字編輯器, 然後重新啟動 Nginx 便可以了。


Leave a Reply