minio

MinIO #

运行docker容器 #

docker-compose.yml:

yaml
services:
  minio:
    image: minio/minio:latest
    restart: on-failure
    command: server /data
    volumes:
      - minio_data:/data
    ports:
      - 127.0.0.1:9000:9000
    environment:
      - TZ=Asia/Shanghai
      - MINIO_ROOT_USER=root
      - MINIO_ROOT_PASSWORD=123456
      - MINIO_SERVER_URL=http://minio.example.com
  minio-console:
    image: minio/minio:latest
    restart: on-failure
    command: server /data --console-address :9001
    ports:
      - 127.0.0.1:9001:9001
    environment:
      - TZ=Asia/Shanghai
      - MINIO_SERVER_URL=http://minio:9000
      - MINIO_BROWSER_REDIRECT_URL=http://minio-console.example.com
volumes:
  minio_data:

minio 容器中的 MINIO_SERVER_URL 服务器链接就是用于客户端配置的endpoint地址(会影响接口签名结果),尚不允许添加相对路径(截至2024年7月最新版本)。

minio-console 容器中的 MINIO_SERVER_URL 服务器链接可以是内网链接地址。

minio-console 容器中的 MINIO_BROWSER_REDIRECT_URL 重定向链接配置,尚不允许添加相对路径(截至2024年7月最新版本)。

备份/还原数据 #

详见docker篇。

配置nginx反向代理 #

方案 A:独立域名 #

text
# MinIO Endpoint
server {
    # 配合 minio 容器中的 MINIO_SERVER_URL 配置项
    server_name minio.example.com;
    listen 80;
    access_log /var/log/nginx/minio.access.log main;
    error_log /var/log/nginx/minio.error.log;
    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_http_version 1.1;
        proxy_set_header Host $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 $host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
# MinIO Console
server {
    # 配合 minio-console 容器中的 MINIO_BROWSER_REDIRECT_URL 配置项
    server_name minio-console.example.com;
    listen 80;
    access_log /var/log/nginx/minio-console.access.log main;
    error_log /var/log/nginx/minio-console.error.log;
    location / {
        proxy_pass http://127.0.0.1:9001;
        proxy_http_version 1.1;
        proxy_set_header Host $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 $host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

方案 B:相对路径 #

此方案只使用一个域名用于Endpoint、Console和其他网站,将Bucket名称作为一级路径(需要事先创建好Bucket)。

text
server {
    server_name example.com;
    listen 80;
    # MinIO Endpoint - bucket-foo
    location /bucket-foo {
        access_log /var/log/nginx/minio-bucket-foo.access.log main;
        error_log /var/log/nginx/minio-bucket-foo.error.log;
        proxy_pass http://127.0.0.1:9000;
        proxy_http_version 1.1;
        proxy_set_header Host $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 $host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    # MinIO Console
    location /minio-console/ {
        access_log /var/log/nginx/minio-console.access.log main;
        error_log /var/log/nginx/minio-console.error.log;
        proxy_pass http://127.0.0.1:9001/;
        proxy_http_version 1.1;
        proxy_set_header Host $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 $host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    # MionIO Console - api forward
    # (这里手动拦截并添加相对路径)
    location /api/v1/ {
        rewrite ^(.*)$ /minio-consle$1 last;
    }
}
2024年8月6日