温馨提示×

ubuntu minio怎么集成nginx

小樊
45
2026-10-22 09:59:40
栏目: 智能运维

下面给你一套在 Ubuntu 上把 MinIO 集成到 Nginx 的反向代理方案,包含常见场景(API + 控制台)、HTTPS 和注意事项。


一、环境假设

  • Ubuntu 20.04 / 22.04
  • MinIO 已安装并运行
  • MinIO 地址(本机):
    • API:http://127.0.0.1:9000
    • 控制台:http://127.0.0.1:9001
  • 域名:minio.example.com

二、MinIO 启动方式(重要)

1️⃣ 使用 systemd 启动(推荐)

minio server /data/minio --console-address ":9001"

确保:

  • 不暴露 9000 / 9001 到公网
  • 只监听 127.0.0.1

三、Nginx 反向代理配置(HTTP)

1️⃣ 安装 Nginx

sudo apt update
sudo apt install nginx

2️⃣ 创建 Nginx 配置文件

sudo nano /etc/nginx/conf.d/minio.conf

API(9000)

server {
    listen 80;
    server_name minio.example.com;

    client_max_body_size 0;

    location / {
        proxy_pass http://127.0.0.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-Proto $scheme;
    }
}

控制台(9001)

server {
    listen 80;
    server_name console.minio.example.com;

    location / {
        proxy_pass http://127.0.0.1:9001;
        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-Proto $scheme;
    }
}

3️⃣ 测试 & 重启

sudo nginx -t
sudo systemctl restart nginx

四、HTTPS(推荐生产环境)

1️⃣ 使用 Certbot(Let’s Encrypt)

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d minio.example.com -d console.minio.example.com

Certbot 会自动帮你加上 HTTPS。


2️⃣ 手动 HTTPS 示例(可选)

server {
    listen 443 ssl;
    server_name minio.example.com;

    ssl_certificate     /etc/ssl/minio/fullchain.pem;
    ssl_certificate_key /etc/ssl/minio/privkey.pem;

    client_max_body_size 0;

    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto https;
    }
}

五、MinIO 客户端(mc)配置

mc alias set myminio https://minio.example.com admin password

六、常见问题 & 注意点

⚠️ 1. 大文件上传失败

必须设置:

client_max_body_size 0;

⚠️ 2. 控制台打不开

  • 控制台必须单独域名或端口
  • 不要和 API 混用同一个 location

⚠️ 3. 不要暴露 MinIO 端口

ufw deny 9000
ufw deny 9001

七、典型架构图

用户
 ↓ HTTPS
Nginx
 ├── minio.example.com → 127.0.0.1:9000
 └── console.minio.example.com → 127.0.0.1:9001

如果你需要:

  • ✅ 单域名同时代理 API + 控制台
  • ✅ Docker 版 MinIO + Nginx
  • ✅ 负载均衡 / 多节点

告诉我你的使用场景,我可以给你更精准的配置。

0 踩