docker安装 MinIO对象存储(已解决 走nginx代理情况下, SignatureDesNotMatch签名不一致问题)
MinIO对象存储
英文文档 中文文档
MinIO 是一个基于GNU AGPL v3开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。
1、安装
$ docker run -d \
-p 11000:11000 \
-p 11001:11001 \
-v /opt/docker/minio/data:/data \
-v /opt/docker/minio/config:/root/.minio \
-e "MINIO_ROOT_USER=根用户名" \
-e "MINIO_ROOT_PASSWORD=根密码" \
--name minio \
minio/minio server /data --address ":11000" --console-address ":11001"
说明:
--address 指定API访问接口(默认9000,可自定义)
--console-address 指定页面仪表盘访问地址
更新文档时使用的版本minio/minio:RELEASE.2022-06-25T15-50-16Z
时间:2022-06-25号版本
警告:!!! 在内网连接 MinIO 时我们使用的是内网 IP,这导致使用 PresignedPutObject或generatePresignedUrl 生成的 分享URL 也是内网 IP,外网不能直接访问。
解决方法:1.生成签名的url转换成外网监听的IP和端口
2.这个时候对此处的11000端口的nginx配置要设置为不携带HOST模式!!!
这样就解决了外网访问签名不对的问题
参考说明:http://slack.minio.org.cn/question/202
警告:!!! 外网访问局域网通过nginx代理的docker部署的minio时出现API签名不一致解决
解决方法:携带host,非80/433端口的Host用 $http_host 代替 $host
server {
listen 11000 ;
location / {
proxy_pass http://xxx.xxx.xxx.xxx:11000 ;
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-Host $http_host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
警告:!!! 非root用户配置需要参考 [为MinIO Server设置Nginx代理](https://docs.min.io/docs/setup-nginx-proxy-with-minio.html)
2、如果你已经有私钥和公钥证书,你需要将它们拷贝到Minio的config/certs/CAs/文件夹,分别取名为private.key 和 public.crt。
3、如果这个证书是被证书机构签发的,public.crt应该是服务器的证书,任何中间体的证书以及CA的根证书的级联。
为梦想不止不休!