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的根证书的级联。

posted @ 2021-02-24 14:41  王子健  阅读(5772)  评论(0编辑  收藏  举报