云服务器防火墙配置
防火墙开放9000-9001端口
Docker Compose 配置
docker-compose.yaml配置,其中主要的是 MINIO_SERVER_URL、MINIO_BROWSER_REDIRECT_URL
version: '3'
services:
minio:
image: minio/minio
container_name: minio
ports:
# api 端口
- "9000:9000"
# 控制台端口
- "9001:9001"
environment:
# 时区上海
TZ: Asia/Shanghai
# 管理后台用户名
MINIO_ROOT_USER: minio
# 管理后台密码,最小8个字符
MINIO_ROOT_PASSWORD: your-password
# https需要指定域名
MINIO_SERVER_URL: "https://your-domain-or-ip:9000"
MINIO_BROWSER_REDIRECT_URL: "https://your-domain-or-ip:9001"
# 开启压缩 on 开启 off 关闭
MINIO_COMPRESS: "off"
# 扩展名 .pdf,.doc 为空 所有类型均压缩
MINIO_COMPRESS_EXTENSIONS: ""
# mime 类型 application/pdf 为空 所有类型均压缩
MINIO_COMPRESS_MIME_TYPES: ""
volumes:
# 映射当前目录下的data目录至容器内/data目录
- /docker/minio/data:/data
# 映射配置目录
- /docker/minio/config:/root/.minio/
command: server --address ':9000' --console-address ':9001' /data # 指定容器中的目录 /data
# privileged: true
# network_mode: "host"
restart: always
Nginx 配置
配置nginx.conf转发
server
{
listen 80;
listen 443 ssl http2 ;
server_name your-domain-or-ip;
location / {
try_files $uri $uri/ /index.html;
}
# 此处为minio文件转发
location ^~ /minio-bucket-name {
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_pass https://your-domain-or-ip:9000;
}
# 此处为server的api服务转发
location /api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# websocket参数
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# proxy_pass http://server/;
proxy_pass http://127.0.0.1:8080/;
}
}
MINIO 设置
管理后台设置
输入 http://your-domain-or-ip:9001 进入 minio 管理后台。
进入Buckets菜单,创建一个bucket,名字为minio-bucket-name,设置Access Policy为public
进入Configuration菜单,设置Region为cn-west-1
配置 MinIO 使用 SSL 证书
证书申请成功后,下载生成的 SSL 证书文件(通常包括 .crt 和 .key 文件)。
我们可以将 SSL 证书文件拷贝到 MinIO 容器中或者挂载证书目录到容器中。
这里我们docker-compose.yaml的配置如下
# 映射配置目录
- /docker/minio/config:/root/.minio/
将.crt和.key文件上传到服务器,将证书文件命名为public.crt和private.key,并放在/docker/minio/config/certs目录下:
/docker/minio/config/certs/public.crt
/docker/minio/config/certs/private.key
现在,你可以通过 https://your-domain-or-ip:9000 访问 MinIO 控制台,并使用 HTTPS 进行安全连接
如果你的 MinIO 是通过 Docker 部署,并且 HTTPS 证书是通过宿主机目录挂载进去的,那么证书过期后通常只需要替换证书文件,然后重启 MinIO 容器,不需要重新安装 MinIO。
假设你的 docker-compose.yml 类似这样:
services:
minio:
image: minio/minio
container_name: minio
volumes:
- ./data:/data
- ./certs:/root/.minio/certs
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: xxxxxxxxx
command: server /data --console-address ":9001"
ports:
- "9000:9000"
- "9001:9001"
那么宿主机一般会有:
certs/
├── public.crt
└── private.key
你只需要把新证书替换进去。
例如新的证书是:
example.com.pem
example.com.key
替换:
cp example.com.pem ./certs/public.crt
cp example.com.key ./certs/private.key
然后确认权限:
chmod 600 ./certs/private.key
chmod 644 ./certs/public.crt
再重启 MinIO:
docker restart minio
或者 Compose:
docker compose restart minio
之后检查:
curl -v https://你的域名:9000
也可以查看 MinIO 日志:
docker logs minio --tail 100
一个比较容易踩坑的地方
如果你的 SSL 证书服务商给的是多个文件,例如:
domain.crt
intermediate.crt
root.crt
domain.key
MinIO 的 public.crt 最好使用完整证书链 Full Chain,通常这样合并:
cat domain.crt intermediate.crt > public.crt
私钥:
cp domain.key private.key
最终:
certs/
├── public.crt
└── private.key
如果服务商直接提供:
fullchain.pem
privkey.pem
那就最简单:
cp fullchain.pem public.crt
cp privkey.pem private.key

