當nginx被用作wordpress等網絡應用的后端服務器時(這些應用通常是基于php和mysql數據庫的),很多用戶會遇到這樣的錯誤:”Request Entity Too Large”。當用戶試圖上傳一個大于配置的最大上傳文件大小的文件時,就會發生這個錯誤。nginx配置中對文件上傳大小的默認限制是1MB。
通常情況下,wordpress管理員在第一次嘗試安裝插件時就會遇到這個錯誤。例如,我試圖在我的本地WP設置上安裝 “下載管理器 “wordpress插件,它給了我同樣的錯誤提示。
在nginx中更改上傳文件大小限制
在Vim或您選擇的任何文本編輯器中打開nginx配置文件。
$ sudo vim /etc/nginx/nginx.conf
添加指令’ client_max_body_size ‘。該指令定義了客戶端請求主體的最大大小。默認情況下,此指令的值為1MB。增大此值將使您能夠上載隨請求發送的較大文件。
在“ http”塊下添加以下行:
client_max_body_size 16M;
如果需要的話,你可以設置更大的數字。現在,保存并關閉文件。
$ sudo systemctl restart nginx
現在你的nginx設置將允許你上傳一個大小為16MB的文件。讓我們再次嘗試安裝插件。
即使配置了nginx文件大小后,php文件的上傳限制仍然阻止上傳。讓我們看看如何更改它。
更改php上傳大小限制
nginx與基于php的Web應用程序結合使用,并且由于php文件上傳大小的限制,可能會出現上述問題。
$ sudo vim /etc/php/7.4/fpm/php.ini
或者
$ sudo vim /etc/php.ini
轉到變量upload_file_maxsize(即允許上傳的文件的最大大小),以及post_maxsize(即發布請求的最大尺寸)。
在上傳文件作為發布請求的一部分時,post_maxsize應始終大于upload_file_maxsize。
根據需要更改值。
upload_max_filesize = 16M
post_max_size = 20M
保存并退出文件。
$ sudo systemctl restart php7.4-fpm
$ sudo systemctl restart nginx
您應該將上述命令中的php7.4替換為您的php版本,或者,如果您的服務器中的php服務名稱就是php,那就替換為“php ”。
現在允許新指定的文件大小在Web應用程序中上傳文件,并且插件成功進行安裝。
我們已經看到了如何處理基于nginx的Web應用程序中請求實體太大的問題。請注意,不僅是php,而且如果其他CGI與nginx一起使用,也會出現此問題。在這種情況下,用戶可以增加特定CGI在配置文件中的限制。