- docker安装minio
docker pull minio
- docker安装ngnix
docker pull nginx
- nginx配置
server {
listen 80;
server_name 192.168.197.148; # 必须与 MINIO_SERVER_URL 一致(无端口)
# 关键:/wengen/ 路径映射到 MinIO 的 Bucket 根目录
location /wengen/ {
# 1. 代理到 MinIO 容器内部地址(末尾保留 / 表示路径替换)
proxy_pass http://172.17.0.2:9000/; # 注意:末尾的 / 不可省略!
# 2. 强制重写 Host 头(必须与 MINIO_SERVER_URL 完全一致)
proxy_set_header Host 192.168.197.148:9000; # 硬编码为 MinIO 配置的域名+端口
# 3. 传递客户端真实信息(关键用于签名验证)
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;
# 4. 禁用缓冲(避免大文件传输问题)
proxy_buffering off;
# 5. 重要:修复 S3 API 的 Transfer-Encoding 头
proxy_request_buffering off;
proxy_http_version 1.1;
proxy_set_header Connection "";
# 6. 超时设置(根据网络环境调整)
proxy_connect_timeout 300;
proxy_send_timeout 600;
proxy_read_timeout 600;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
# 可选:健康检查路径(避免误拦截)
location /healthz {
return 200 'OK';
add_header Content-Type text/plain;
}
}
- 启动minio
docker run -d --name my_minio -p 9000:9000 -p 9001:9001 -v /wz_conf/minio/data:/data -v /wz_conf/minio/config:/root/.minio -e MINIO_ROOT_USER=admin -e MINIO_ROOT_PASSWORD=admin123 minio/minio server /data --console-address ":9001"
- 启动nginx
docker run -d --name nginx-minio -p 80:80 -v /nginx/config/minio-proxy.conf:/etc/nginx/conf.d/default.conf --network bridge <minio的容器id或者容器名称>