思源笔记使用 MinIO 进行 S3 同步出现签名不一致错误的解决方法

问题描述

由于购买了思源的功能特性,再加上有 NAS,因此有了个人云备份的想法,使用 docker 安装 MinIO 后,在思源里进行配置出现如下报错:
operation error S3: ListBuckets, https response error StatusCode: 403, RequestID: XXXXX, HostID: XXXX, api error SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your key and signing method. (Provider: S3)

翻译过来就是思源解析出来的签名和 MinIO 的签名不一致。

排查过程

ds 的分析是时间同步问题、秘钥权限问题、区域与签名算法问题、请求参数问题、网络代理问题、腾讯云 COS 适配问题。

于是进行了以下确认:

  1. 思源与 MinIO 都在同一 NAS 上部署 - 时间同步无问题;
  2. 与 MinIO 对比 endpoint、秘钥配置 - 正确;
  3. Region ID 与 MinIO 一致;
  4. 在 Alist 中尝试对象存储挂载,报同样错误 - 两个应用同时出错可能较小,签名算法无问题,同时基本排除思源源码问题;
  5. 请求参数问题,使用 MinIO 局域网 IP 尝试同步,虽然没有报错,但是会超时无法连接 - 可能与反向代理有关;
  6. 网络通过 curl 与 ping 命令确认无问题;
  7. 腾讯云 COS 适配 - 使用 MinIO 无此问题。

综上,大致猜测这个错误和反向代理有关。

之后在思源论坛和各种网站查询,发现思源笔记于 3.1.16 版本后 S3 有修改表头导致无法同步的情况,同时 MinIO 官方文档上有给出 nginx 反向代理的配置文件,遂尝试修改反向代理参数,成功解决同步问题。

解决方案

思源笔记配置

image

反向代理配置

根据 CSDN 上的解决方法,需要修改的 Nginx 配置如下:

最后附上我自己的配置以供参考:

sserver { server_name minio.yourwebsite.com; # 改成自己的 listen 90 ssl; ssl_certificate /home/nginxWebUI/.acme.sh/*.yourwebsite.com/fullchain.cer; ssl_certificate_key /home/nginxWebUI/.acme.sh/*.yourwebsite.com /*.yourwebsite.com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; location / { proxy_pass http://192.168.1.1:9000; # 改成自己的 proxy_set_header Host $http_host; # 必须配置 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods *; add_header Access-Control-Allow-Headers *; add_header Access-Control-Allow-Credentials true; if ($request_method = 'OPTIONS') { return 204; } proxy_redirect http:// https://; real_ip_header X-Real-IP; # 必须配置 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Proto $scheme; }

参考链接

https://blog.csdn.net/cucgyfjklx/article/details/133165964

https://minio.org.cn/docs/cn/minio/linux/integrations/setup-nginx-proxy-with-minio.html

https://ld246.com/article/1736603838610

(完)

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    26416 引用 • 109881 回帖 • 1 关注
  • MinIO
    12 引用 • 39 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...