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