項目上在做上傳文件(清單導入)的時候產生了這個錯誤:
從字面上看,說的是請求的實體太大的問題,那么可以聯想到是HTTP請求中的Body大小被限制了的原因。
Nginx中的【client_max_body_size】配置屬性
通過查資料,發現是Nginx配置中限制了請求的實體大小,因此就可以通過修改Nginx的配置文件來解決這個問題。Nginx的默認配置文件是conf目錄下的nginx.conf文件,如果有自行擴展的配置文件可以在nginx.conf文件中查找include關鍵字去定位到相應的擴展配置文件。
具體的話是有一個【client_max_body_size】屬性,這個屬性可以配置在http節點下(http全局),可以配置在server節點下(server全局),也可以配置在location節點下(單應用)。要注意的是,這個屬性在不配置的情況下默認值是1m,也就是限制了請求實體的大小為1m。
http節點下:
http { # 將Nginx代理的所有請求實體的大小限制為20m client_max_body_size 20m; }
server節點下:
server { # 將該服務下的所有請求實體的大小限制為20m client_max_body_size 20m; }
location節點下:
location /yanggb { # 將此路由請求的實體大小限制為20m client_max_body_size 20m; }
保存之后要記得重啟Nginx使修改后的配置生效。
service nginx restart
Tomcat的【maxPostSize】配置屬性
另外的,Tomcat下的conf文件夾中的server.xml文件中也有屬性配置【maxPostSize】可以限制post請求參數的大小。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8443" URIEncoding="UTF-8" maxThreads="3000" compression="on" compressableMimeType="text/html,text/xml" maxPostSize="256"/> <Connection port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />
要注意的是,在Tomcat7.0.63之前,maxPostSize屬性設置為0和負數都可以代表不限制,但是之后的Tomcat版本只能將maxPostSize屬性設置為負數才能代表不限制。
"你離開以后,我無論是往前看,還是朝身后回顧,都空無一人。"