From e487f021dc8d510e2edf2c9ce397de96df61742a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Fri, 7 Aug 2026 04:00:39 +0800 Subject: [PATCH] =?UTF-8?q?fix(storage):=20=E8=A7=84=E8=8C=83=E5=8C=96endp?= =?UTF-8?q?oint=E5=B9=B6=E6=8C=87=E5=AE=9AMinIO=E5=AE=A2=E6=88=B7=E7=AB=AF?= =?UTF-8?q?region?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 去除endpoint结尾斜杠,避免minio-java拼接双斜杠导致签名不匹配 - MinIO客户端构建时显式指定region为us-east-1 - 跳过MinIO SDK的自动getBucketLocation探测,避免反向代理环境下签名验证失败 - 修改AliOssController和FileRecordServiceImpl中相关代码逻辑 --- .../common/system/controller/AliOssController.java | 8 ++++++++ .../common/system/service/impl/FileRecordServiceImpl.java | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/src/main/java/com/gxwebsoft/common/system/controller/AliOssController.java b/src/main/java/com/gxwebsoft/common/system/controller/AliOssController.java index a3b016b..832ccf3 100644 --- a/src/main/java/com/gxwebsoft/common/system/controller/AliOssController.java +++ b/src/main/java/com/gxwebsoft/common/system/controller/AliOssController.java @@ -102,6 +102,11 @@ public class AliOssController extends BaseController { String accessKeySecret = settingInfo.getString("accessKeySecret"); String uploadMethod = settingInfo.getString("uploadMethod"); + // 规范化 endpoint:去掉结尾斜杠,避免 minio-java 拼接出双斜杠导致签名不匹配 + if (StrUtil.isNotBlank(endpoint) && endpoint.endsWith("/")) { + endpoint = endpoint.substring(0, endpoint.length() - 1); + } + // 判断是否登录 String authorization = getAuthorization(); @@ -123,9 +128,12 @@ public class AliOssController extends BaseController { OSS ossClient = null; MinioClient minioClient = null; if (isMinio) { + // 显式指定 region=us-east-1,跳过 minio-java 的 getBucketLocation 自动探测 + // (该探测 GET 在 MinIO + 反代下会触发 SignatureDoesNotMatch) minioClient = MinioClient.builder() .endpoint(endpoint) .credentials(accessKeyId, accessKeySecret) + .region("us-east-1") .build(); } else { CredentialsProvider credentialsProvider = new DefaultCredentialProvider(accessKeyId, accessKeySecret); diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/FileRecordServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/FileRecordServiceImpl.java index 2f64f73..1600daf 100644 --- a/src/main/java/com/gxwebsoft/common/system/service/impl/FileRecordServiceImpl.java +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/FileRecordServiceImpl.java @@ -98,14 +98,20 @@ public class FileRecordServiceImpl extends ServiceImpl