HTTP 413錯誤解決方法


異常原因:

  通過post上傳文件過大時,會出現413錯誤碼;前端打開開發者模式,在輸出台的位置會出現:

<span style="color:#ff0000;">Failed to load resource: the server responded with a status of 413 (Request Entity Too Large)</span>

  這是由於上傳文件過大引起的,是因為請求長度超過了nginx默認的緩存大小和最大客戶端最大請求大小。

  排查服務器是否有使用nginx做反向代理;

解決方案:

  修改nginx配置文件,配置客戶端請求大小和緩存大小

  輸入命令:

vim /etc/nginx/nginx.conf

  在http{}中輸入:

client_max_body_size 8M;(配置請求體緩存區大小) 

client_body_buffer_size 128k;(設置客戶端請求體最大值) 

fastcgi_intercept_errors on;

 

重啟nginx服務:  

./nginx -s reload 

 

附:

經過網上搜索,找的了分別針對post和get方式的解決辦法

針對post:

  針對post請求解決辦法: 

  修改nginx.conf里面的幾個相關的配置參數 

  client_body_buffer_size 10m(配置請求體緩存區大小, 不配的話) 

  client_max_body_size 20m(設置客戶端請求體最大值) 

  client_body_temp_path /data/temp (設置臨時文件存放路徑。只有當上傳的請求體超出緩存區大小時,才會寫到臨時文件中,注意臨時路徑要有寫入權限) 

  如果上傳文件大小超過client_max_body_size時,會報413 entity too large的錯誤。 


針對get:
  針對get請求,我們可以通過修改另外兩個配置來解決請求串超長的問題: 

  client_header_buffer_size 語法:client_header_buffer_size size 默認值:1k 使用字段:http, server 這個指令指定客戶端請求的http頭部緩沖區大小絕大多數情況下一個頭部請求的大小不會大於1k不過如果有 來自於wap客戶端的較大的cookie它可能會大於1k,Nginx將分配給它一個更大的緩沖區,這個值可以在 large_client_header_buffers里面設置。 large_client_header_buffers 語法:large_client_header_buffers number size 默認值:large_client_header_buffers 4 4k/8k 使用字段:http, server 指令指定客戶端請求的一些比較大的頭文件到緩沖區的最大值,如果一個請求的URI大小超過這個值,服務 器將返回一個"Request URI too large" (414),同樣,如果一個請求的頭部字段大於這個值,服務器 將返回"Bad request" (400)。 緩沖區根據需求的不同是分開的。 默認一個緩沖區大小為操作系統中分頁文件大小,通常是4k或8k,如果一個連接請求將狀態轉換為 keep-alive,這個緩沖區將被釋放。

  為什么修改http header的大小就能解決get請求串過長的問題?因為get請求參數會拼在http header中,所以,修改了http header的大小,就能解決上面問題。

  Nginx 400錯誤:HTTP頭/Cookie過大

  nginx400錯誤是由於request header過大,通常是由於cookie中寫入了較長的字符串所引起的。

  解決方法是不要在cookie里記錄過多數據,如果實在需要的話可以考慮調整在nginx.conf中的client_header_buffer_size(默認1k)

  若cookie太大,可能還需要調整large_client_header_buffers(默認4k),該參數說明如下:

  請求行如果超過buffer,就會報HTTP 414錯誤(URI Too Long)

  nginx接受最長的HTTP頭部大小必須比其中一個buffer大,否則就會報400的HTTP錯誤(Bad Request)。

 


免責聲明!

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



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