OpenList + RustFS 上传问题排查
问题描述
OpenList链接RustFS s3端点后无法通过OpenList上传文件
控制台出现cors或者403等导致无法通过OpenList上传文件

环境信息: (问ai前最好提前说明相关服务环境信息)
- RustFS 服务运行在
localhost:9000(HTTP) - Nginx 反向代理在
9002端口提供 HTTPS 访问 - 端点地址:
https://RustFS.example.com:9002 - OpenList在别的机器:
https://alist.example.com
省流总结:
Nginx对RustFS的反代缺少一个关键配置 proxy_redirect off 反代实现https的时候端口冲突导致301重定向循环
TIP
问ai前最好提前说明相关服务环境信息,复盘流程会发现,如果知道Nginx做了反代可以提前让ai检查Nginx加快问题排查流程。本次排查时间主要消耗在梳理朋友机器网络环境上,ai debug还是很快的
问题排查流程(省略了一部分内容+信息脱敏)
NOTE
本次排查在Antigravity + Claude Opus 4.5(Thinking) 工具下
1.先直接通过RustFS页面上传,确认RustFS服务正常。 --确认服务正常
2.接下来让ai编写s3端点上传,验证s3端点上传是否正常。 --问题初显
初始尝试:使用 boto3 默认配置连接,返回 301 错误
~/…/github/rustf $ uv run test_upload.py Installed 7 packages in 52ms ================================================== 🚀 RustFS S3 上传测试 ================================================== ⚠️ 未指定文件,将创建测试文件... 📝 已创建测试文件: /tmp/RustFS_test.txt 📦 正在上传: /tmp/RustFS_test.txt 📍 目标: s3://ccc/RustFS_test.txt 🔗 端点: https://RustFS.example.com:9002 ❌ 上传失败: Failed to upload /tmp/RustFS_test.txt to ccc/RustFS_test.txt: An error occurred (301) when calling the PutObject operation: Moved Permanently尝试添加路径风格访问:仍然失败 301
config=Config(
signature_version="s3v4",
s3={"addressing_style": "path"}
)- 添加 region 配置:仍然失败 301
region_name="us-east-1"- 禁用ssl:上传成功,但后面又失败了,上传成功后的ListObjectsV2操作也出现 301
继续curl检查端点响应信息

得出问题在Nginx 接下来把Nginx完整信息发送并解析,得出关键信息,缺少proxy_buffering off;

重载Nginx配置后,上传100%成功,但ListObjectsV2操作出现 301
继续让ai检查Nginx配置,发现一处端口冲突导致的重定向循环。。。
删除后重载Nginx配置,ListObjectsV2也正常了。OpenList端也恢复正常使用了。

