当前位置: 首页 > news >正文

Minio临时地址访问资源提示SignatureDoesNotMatch问题记录

  • 问题描述:公司的测试环境使用MInio做对象存储,某天在做个人中心下载功能时发现附件下载请求出现403错误,响应返回的是签名不匹配SignatureDoesNotMatch。
  • 问题排查
  1. 首先能够正常的通过Minio获取到临时访问路径,那么就可以排除endpoint、accessKey、secretKey和bucketName这些基础的配置问题
  2. 问题描述已经明确了是签名不匹配那么可以列举出有哪些情况下会导致签名不匹配
  1. 后端获取到的签名URL是否被转码操作,或者可以比对一下后端获取到的地址和前端访问的地址是否有差异
  2. Minio的签名依赖时间戳,可以看下访问的服务器和Minio所在的服务器是否时间一致
  3. Nginx在做反向代理时Host是否正确

一般情况下2、3情况是最容易出现的。

  • 首先从最简单的路径一致性问题排查,这个可以直接通过日志的方式,也是很少会出问题。(这里不是这个原因)
  • 检查时间是否一致,服务器命令:通过 date 命令,或者 timedatectl status 查看服务器时间是否一致
    在这里插入图片描述
    这里由于之前未做NTP的同步所以,NTP enabled 为 n/a NTP synchronized为 no,虽然通过date 可以看到时间是正常的,但是也可能存在这样的问题,所以我们这里就直接先使用NTP做下同步,这样也可以避免在之后Minio的时间偏移量大了之后某一天突然出现签名不匹配问题。
  1. 安装 chrony Linux 系统上进行 NTP 时间同步最常用的工具(更轻量、启动更快、在不稳定的网络下表现更好)
sudo apt update
sudo apt install chrony
# 启动服务
sudo systemctl start chronyd
# 设置为开机自启
sudo systemctl enable chronyd
# 检查状态
sudo systemctl status chronyd

在这里插入图片描述
2. 查看系统偏移量 chronyc tracking 其中System time 这个在正负0.00…的情况下也就是偏移量极小就可以去重启Minio服务,然后再次验证(确认也不是时间的问题)
在这里插入图片描述

  • 排查Nginx的反向代理Host的问题

继续查阅资料,发现minio做签名时除了时间参数之外,还和Host有关,也就是获取临时地址用于计算的签名使用的Host和验证签名使用的Host必须要一致。从代码中可以看到,获取了最初的临时地址后,由于使用的是IP+端口的形式,在代码中做了转换返回给前端的是域名的形式,然后在代理的过程中配置的是:
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme
$host为域名 $scheme 为https 和获取临时地址时的不一致,那么只有在代理的地方去做修改
在这里插入图片描述
proxy_set_header 直接写后端一开始通过minio获取到的地址时的ip和端口
proxy_set_header X-Forwarded-Proto 因为后端访问minio直接用的 Http 所以这里也要一致

最后问题解决,确实是ng的问题(吐槽一下:问了都说没改什么)。

http://www.dtcms.com/a/356770.html

相关文章:

  • gdb打印长字符产变量信息
  • TypeScript的Type
  • Linux(0)|梦开始的地方:xshell下载
  • MAC spotlight 搜不到应用程序和 tags 生效
  • 五、Callable 接口
  • Spring为什么需要三级缓存
  • 海康相机开发---设备布防(Setup Alarm)
  • 数据库Mysql
  • 微积分 | 积分代换
  • 如何将iPhone日历传输到电脑
  • 内置高压MOS的智能调光方案:AP5126 LED降压恒流驱动芯片
  • 深度拆解判别式推荐大模型RankGPT!生成式精排落地提速94.8%,冷启动效果飙升,还解决了传统推荐3大痛点
  • 评价指标FID/R Precision
  • 《R for Data Science (2e)》免费中文翻译 (第6章) --- scripts and projects
  • 学习游戏制作记录(音频的制作和使用)8.28
  • 算法题打卡力扣第169题:多数元素(easy)
  • 【二叉树(DFS)- LeetCode】124. 二叉树中的最大路径和
  • 考民航安检员证需要具备哪些技能和知识?
  • 卷积神经网络为什么要填充(Padding)
  • Python爬虫实战:研究Pyplot模块,构建IMDb数据采集和分析系统
  • 【Tools】C#文件自动生成UML图
  • Vue3 全面介绍
  • ArcGIS Pro 地图打包与解包
  • STM32CubeMX + HAL 库:基于 I²C 通信的 AHT20 高精度温湿度测量实验
  • 佳易王钓场计时计费系统:全方位赋能钓场智能化管理,软件操作教程
  • Halcon那些事:如何使用差异模型create_variation_model检测印刷品缺陷
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(22):文法+单词第7回4 + 考え方1
  • Java全栈开发工程师面试实录:从基础到微服务的深度技术解析
  • LangChain如何使用通义千问的向量模型
  • 嵌入式学习日志————MPU6050简介