You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确配置Nginx代理Docker部署的MinIO服务?

问题原因

浏览器报错的核心是WebSocket连接失败——MinIO控制台依赖WebSocket实现存储桶数据的实时同步,当前Nginx配置没有处理WebSocket的升级请求;另外MinIO未配置正确的外部访问URL,导致控制台内部请求指向了容器内部地址,而非反向代理后的公网地址。

修复步骤

1. 更新Nginx配置,添加WebSocket支持

在代理MinIO控制台(9001端口)的location /块中,补充WebSocket相关配置:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name s3.mysite.com;

    ssl_certificate /etc/letsencrypt/live/s3.mysite.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/s3.mysite.com/privkey.pem;

    ignore_invalid_headers off;
    client_max_body_size 0;
    proxy_buffering off;

    # 代理存储桶请求到MinIO数据端口(9000)
    location /blog/ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;

        proxy_connect_timeout 300;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        chunked_transfer_encoding off;

        proxy_pass http://minio:9000;
    }

    # 代理控制台请求到MinIO控制台端口(9001),新增WebSocket支持
    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        # 处理WebSocket升级
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        # 延长WebSocket连接超时时间
        proxy_read_timeout 86400;

        proxy_connect_timeout 300;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        chunked_transfer_encoding off;

        proxy_pass http://minio:9001;
    }
}

2. 配置MinIO外部访问URL

在你的config/.env.minio.prod文件中添加以下环境变量,告诉MinIO控制台和API的公网访问地址:

MINIO_SERVER_URL=https://s3.mysite.com/blog
MINIO_BROWSER_REDIRECT_URL=https://s3.mysite.com
  • MINIO_SERVER_URL:对应Nginx代理的S3 API路径(/blog/),控制台会用这个地址调用数据接口
  • MINIO_BROWSER_REDIRECT_URL:控制台自身的公网访问地址

3. 重启服务生效

# 重载Nginx配置
sudo nginx -s reload

# 重启MinIO容器
docker-compose up -d --force-recreate minio
验证

重新访问https://s3.mysite.com,登录控制台后浏览存储桶,页面应该能正常加载,浏览器不再出现WebSocket连接失败的报错。

内容的提问来源于stack exchange,提问作者RAFIQ RANA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 13:42:51