nginx 伺服器大檔案上傳時500錯誤

2021-06-25 08:37:02 字數 1134 閱讀 9811



採用nginx作反向**,出現了乙個詭異的問題,小檔案可以提交,大檔案會報500內部錯誤。這個是什麼原因導致的呢?

查wiki可知,上傳檔案大小相關的有三個配置

client_body_buffer_size 配置請求體快取區大小, 不配的話,

client_body_temp_path 設定臨時檔案存放路徑。只有當上傳的請求體超出快取區大小時,才會寫到臨時檔案中

client_max_body_size 設定上傳檔案的最大值

所以查出來,問題出現的原因是

1.檔案大小超過了client_body_buffer_size

2.client_body_temp_path的臨時檔案路徑居然沒有寫許可權

以上兩個原因導致了返回500錯誤。

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

原因知道了,修正就簡單了。

1.client_body_buffer_size 盡量設定的大點,這是基於速度的考慮,如果因為設定的過小,導致上傳的檔案老要寫磁碟,那速度就太慢了。

2.client_body_temp_path 路徑要有可寫許可權,這個是明顯的錯誤了。改正了就好

3.client_max_body_size 設定上傳檔案的最大值,這個是基於安全的考慮,我們認為正常使用者不會或者基本不會上傳太大的檔案。

可以設定為client_max_body_size 100m;  或者按照自己的業務來設定這個值。

client_body_buffer_size

語法:client_body_buffer_size the_size

預設值:8k/16k

使用字段:http, server, location

這個指令可以指定連線請求實體的緩衝區大小。

如果連線請求超過快取區指定的值,那麼這些請求實體的整體或部分將嘗試寫入乙個臨時檔案。

預設值為兩個記憶體分頁大小值,根據平台的不同,可能是8k或16k。

當請求頭中的content-length欄位小於指定的buffer size,那麼nginx將使用較小的乙個,所以nginx並不總是為每乙個請求分配這個buffer size大小的buffer。



nginx 伺服器大檔案上傳時500錯誤

採用nginx作反向 出現了乙個詭異的問題,小檔案可以提交,大檔案會報500內部錯誤。這個是什麼原因導致的呢?查wiki可知,上傳檔案大小相關的有三個配置 client body buffer size 配置請求體快取區大小,不配的話,client body temp path 設定臨時檔案存放路徑...

nginx 上傳大檔案超時

nginx 上傳大檔案超時 情況如下 用nginx作 伺服器,上傳大檔案時 本人測試上傳50m的檔案 提示上傳超時或檔案過大。原因是nginx對上傳檔案大小有限制,而且預設是1m。另外,若上傳檔案很大,還要適當調整上傳超時時間。解決方法是在nginx的配置檔案下,加上以下配置 client max ...

大檔案非同步分片上傳到Seaweed伺服器

大檔案非同步分片上傳到seaweed伺服器 客戶端把大檔案分片上傳,伺服器接收到檔案後,按照每段的序號和每段大小重新拼接成完整的臨時檔案.然後再將臨時檔案上傳到檔案伺服器 seaweed 檔案系統上傳檔案的位址 value private string file target url public ...