nginx產生【413 request entity too large】錯誤的原因與解決方法


項目上在做上傳文件(清單導入)的時候產生了這個錯誤:

從字面上看,說的是請求的實體太大的問題,那么可以聯想到是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屬性設置為負數才能代表不限制。

 

"你離開以后,我無論是往前看,還是朝身后回顧,都空無一人。"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM