nacos+nginx動態配置大文件上傳限制

前言

??????今天還要跟大家分享的一個點就是微服務網關gateway用webflux響應式不用servlet后,引發的一個忽略點差點在演示的時候炸鍋,也不多講廢話,說說現象,說說處理就了事。


一、上傳超過20MB的視頻報錯

  • 配置在nacos里,讀取配置用的@value注解
  • 發布新配置,攔截不生效
  • 用了nginx
    就是這么個現象,其實大概也知道原因。

二、初步分析原因

  • 首先這是小弟寫的,我不想動。
  • 其次可以理解是培養試驗小弟,誰知道中午小弟直接就去吃飯了,留我一個人在這。
  • 最后,還得是自己頂上。
    ??????目前,自己確實是軟開的小管理,但是其實還是處于協管,因為我才來,其他人都是老資歷,所以老板派了個老資歷主管幫我協管。
    ??????這小弟也是在這做兼職,覺得可以,留下來換血的。
    ??????運維是自己招的,去吃飯還說了聲,小弟啥都沒說,回頭就看不到人了。。。。。。
    原因就下面:
  • gateway是webflux響應式的,基因就不支持大文件
  • 上傳接口的網關
  • 配置限制在nacos里,但是讀取姿勢不對
  • 使用@value注解讀取的

三、正確處理

1.nacos里的配置

spring:servlet:multipart:max-file-size: 102MBmax-request-size: 300MB

2.nginx的代理配置

location /upload/{proxy pass http://ip:子服務端口/;#后端服務直連
}

??????這里其實就是按照國際慣例處理,上傳文件繞過gateway網管,直連上傳接口的子服務。其實國際慣例是上傳到第三方服務,但是我們這不是才開始,經費有限,先磁盤吧。

3.nginx配置大文件

??????這里是配置的全局max_client_body:2048MB

4.前端代理

??????前端處理代理,將/upload代理直接到子服務端口。

5.讀取配置采用

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;/*** 上傳配置類** @author zwmac*/
@Component
@ConfigurationProperties(prefix = "spring.servlet.multipart")
@Data
public class UploadConfig {private String maxFileSize;private String maxRequestSize;
}

6.使用配置


import com.rs.gov.config.upload.UploadConfig;
import com.rs.gov.entity.RestResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MaxUploadSizeExceededException;@ControllerAdvice
public class GlobalFileExceptionHandler {@Autowiredprivate UploadConfig uploadConfig;@ExceptionHandler(MaxUploadSizeExceededException.class)@ResponseBodypublic RestResponse<String> handleMaxSizeException(MaxUploadSizeExceededException exc) {// 返回自定義的錯誤信息String maxSize = uploadConfig.getMaxFileSize();return RestResponse.fail("文件大小超過"+maxSize+"限制");}
}

??????基本上就ok了,小弟還給前端整了個獲取上傳大小的接口,現在nacos里就可以動態修改了。
在這里插入圖片描述
??????廢話也不多說了,還在支持現場演示呢!這也是坑,當時是代理兼職做997一周多點做的,沒有配測試崗,家里又沒有機器測試,開發自測還是不夠。


總結

  • gateway是webflux響應式的,不是servlet,也就是大文件不支持
  • @value讀取nacos的姿勢不太對,nacos的配置他只能讀取到第一次,新發布的它步讀取了,(也有可能一次都讀不到,反正就是啟動讀取配置時機不太對)
  • nginx有大文件限制,需要配置max_client_body
    微服務大文件上傳的通用做法是使用第三方服務,非要自己存儲就繞過gateway。
    ??????希望能幫到大家,uping!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89792.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89792.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89792.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mr 任務運行及jar

mainclass如下&#xff1a;LoggingDriver

Python 數據分析:numpy,抽提,整數數組索引與基本索引擴展(元組傳參)。聽故事學知識點怎么這么容易?

目錄1 代碼示例2 歡迎糾錯3 論文寫作/Python 學習智能體------以下關于 Markdown 編輯器新的改變功能快捷鍵合理的創建標題&#xff0c;有助于目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個適合你的列表創建一個表格設定內容居中、居左、居右Sm…

ECU開發工具鏈1.10版:更強大的測量、校準與數據分析體驗.

汽車電子開發與測試領域&#xff0c;高效、精準且安全的工具是成功的基石。DiagRA X 作為一款廣受認可的 Windows 平臺綜合解決方案&#xff0c;持續引領行業標準。其最新發布的 1.10 版本帶來了顯著的功能增強與用戶體驗優化&#xff0c;進一步鞏固了其在 ECU 測量、校準、刷寫…

Qt C++串口SerialPort通訊發送指令讀寫NFC M1卡

本示例使用的發卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1bVIuGpf&ftt&id18645495882 一、確定已安裝Qt Serial Port組件 二、在.pro項目文件聲明引用Serialport組件 三、在.h頭文件內引用Serialport組件 四、在.cpp程序中實…

Go 語言開發中用戶密碼加密存儲的最佳實踐

在現代 Web 應用開發中&#xff0c;用戶密碼的安全存儲是系統安全的重要環節。本文將結合 Go 語言和 GORM 框架&#xff0c;詳細介紹用戶密碼加密存儲的完整解決方案&#xff0c;包括數據庫模型設計、加密算法選擇、鹽值加密實現等關鍵技術點。 一、數據庫模型設計與 GORM 實踐…

優化Facebook廣告投放的五大關鍵策略

一、精確篩選目標國家用戶在Audience的locations設置目標國家時&#xff0c;務必勾選"People living in this location"選項。系統默認會選擇"People living in this location or recently in this location"&#xff0c;這會擴大受眾范圍&#xff0c;包含…

Debian-10-standard用`networking`服務的`/etc/network/interfaces`配置文件設置多網卡多IPv6

Debian-10-buster-standard用networking服務的/etc/network/interfaces配置文件設置多網卡多IPv6 Debian-10-buster-standard用networking服務的/etc/network/interfaces配置文件設置多網卡多IPv6 250703_123456 三塊網卡 : enp0s3 , enp0s8 , enp0s9 /etc/network/interfac…

對話式 AI workshop:Voice Agent 全球五城開發實錄

過去幾個月&#xff0c;TEN Framework 團隊與 Agora 和聲網圍繞 “對話式AI”題&#xff0c;踏上了橫跨全球五大城市的精彩旅程——東京、舊金山、巴黎、北京、京都。 五場精心籌備的Workshop 場場爆滿&#xff0c; 匯聚了來自當地及全球的開發者、創業者、產品經理與語音技術愛…

算法學習筆記:6.深度優先搜索算法——從原理到實戰,涵蓋 LeetCode 與考研 408 例題

在計算機科學領域&#xff0c;搜索算法是解決問題的重要工具&#xff0c;其中深度優先搜索&#xff08;Depth-First Search&#xff0c;簡稱 DFS&#xff09;憑借其簡潔高效的特性&#xff0c;在圖論、回溯、拓撲排序等眾多場景中發揮著關鍵作用。無論是 LeetCode 算法題&#…

vue create 和npm init 創建項目對比

以下是關于 vue create 和 npm init 的對比分析&#xff1a; 1. 定位與功能 vue create 定位&#xff1a;Vue 官方提供的腳手架工具&#xff0c;基于 Vue CLI&#xff0c;用于快速創建標準化的 Vue 項目&#xff0c;支持 Vue 2 和 Vue 3。功能&#xff1a;提供交互式配置&…

C++ bitset 模板類

bitset<256> 數據類型詳解 bitset<256> 是 C 標準庫中的一個模板類&#xff0c;用于處理固定大小的位集合&#xff08;Bit Set&#xff09;。它可以高效地操作和存儲二進制位&#xff0c;特別適合需要處理大量布爾標志或簡單計數的場景。 基本定義與特性 1. 模板參…

通信握手言和:PROFINET轉EtherCAT網關讓汽輪機振動數據“破壁”傳輸

某大型電廠的關鍵汽輪機設備采用EtherCAT振動傳感器進行實時監測&#xff0c;但由于工廠PLC振動分析系統基于PROFINET協議&#xff0c;數據無法直接接入&#xff0c;導致振動數據延遲、預警滯后&#xff0c;嚴重影響設備健康管理。傳統的人工巡檢和定期維護難以捕捉早期機械故障…

golang 中當 JSON 數據缺少結構體(struct)中定義的某些字段,會有異常嗎

目錄關鍵影響示例演示潛在問題與解決方案問題 1&#xff1a;邏輯錯誤&#xff08;零值干擾&#xff09;問題 2&#xff1a;忽略可選字段問題 3&#xff1a;第三方庫驗證最佳實踐總結在 Go 語言中&#xff0c;當 JSON 數據缺少結構體&#xff08;struct&#xff09;中定義的某些…

Fiddler 中文版怎么配合 Postman 與 Wireshark 做多環境接口調試?

現代項目中&#xff0c;開發、測試、預發布、生產環境往往分離配置&#xff0c;前端在開發過程中需要頻繁切換接口域名、驗證多環境表現。而接口升級或項目迭代時&#xff0c;還需要做回歸測試&#xff0c;確保老版本接口仍能兼容&#xff0c;避免線上事故。這些環節若僅靠代碼…

釘釘小程序開發技巧:getSystemInfo 系統信息獲取全解析

在釘釘小程序開發中&#xff0c;獲取設備系統信息是實現跨平臺適配和優化用戶體驗的關鍵環節。本文將深入解析 dd.getSystemInfo 接口的使用方法、技術細節與實際應用場景&#xff0c;幫助開發者高效應對多終端開發挑戰。一、接口功能與核心價值dd.getSystemInfo 是釘釘小程序提…

Java項目Maven配置JDK1.8全攻略

目錄 &#x1f9e9; 一、全局環境變量配置&#xff08;推薦系統級統一&#xff09; ?? 二、Maven全局配置&#xff08;多項目統一&#xff09; &#x1f4c2; 三、項目級配置&#xff08;推薦團隊協作&#xff09; &#x1f4bb; 四、IDE配置&#xff08;輔助驗證&#x…

使用tensorflow的線性回歸的例子(六)

波士頓房價 import matplotlib.pyplot as plt %matplotlib inline import tensorflow as tf import numpy as np from sklearn.datasets import load_boston import sklearn.linear_model as sk boston load_boston() features np.array(boston.data) labels np.arra…

YOLOv11深度解析:Ultralytics新一代目標檢測架構創新與實戰指南

?? 2024年Ultralytics重磅推出YOLOv11**:在精度與速度的平衡木上再進一步,參數減少22%,推理速度提升2%,多任務支持全面升級! ?? 一、YOLOv11核心創新:輕量化與注意力機制的完美融合 YOLOv11并非顛覆性重構,而是通過模塊級優化實現“少參數、高精度、快推理”的目標…

基于 SpringBoot+Vue.js+ElementUI 的 “花開富貴“ 花園管理系統設計與實現7000字論文

摘要 本論文詳細闡述了基于 SpringBoot、Vue.js 和 ElementUI 的 "花開富貴" 花園管理系統的設計與實現過程。該系統旨在為花園管理者提供高效、便捷的花園信息管理平臺&#xff0c;實現花卉信息、員工、客戶、訂單等全方位管理功能。論文首先分析了花園管理系統的研…

RESTful API 安裝使用教程

一、RESTful API 簡介 REST&#xff08;Representational State Transfer&#xff09;是一種基于 Web 的架構風格&#xff0c;RESTful API 是使用 HTTP 協議并遵循 REST 原則設計的 API 接口。其核心思想是&#xff1a;使用標準 HTTP 方法&#xff08;GET、POST、PUT、DELETE&…