生产环境可以使用的minio操作

参考文档:
https://www.cnblogs.com/hahaha111122222/p/17049800.html
https://www.cnblogs.com/hahaha111122222/p/17049426.html

一、使用docker安装minio

# mkdir -p /data/minio_data

# docker run -p 9000:9000 -p 9001:9001 \
  --name minio --restart=always \
  -v /data/minio_data:/data \
  -e "MINIO_REGION_NAME=zh-east-1" \
  -e "MINIO_REGION_COMMENT=中国华北一区" \
  -e "MINIO_ROOT_USER=admin" \
  -e "MINIO_ROOT_PASSWORD=12345678" \
  -d minio/minio:RELEASE.2025-04-08T15-41-24Z server /data --console-address ':9001' --address ':9000'

上述参数解析:

MINIO_REGION_NAME:描述的是服务器的物理位置,默认是us-east-1(美国东区1)
MINIO_ROOT_USER:控制台登录账号
MINIO_ROOT_PASSWORD:控制台登录密码
--console-address:指定控制台端口,不指定则会随机生成(可通过查看启动日志获取该随机端口),建议指定
MINIO_BROWSER:开启或关闭浏览器访问,默认是开启的 (on|off)
--address ":9000" 指定API端口,默认为9000,建议指定

minio使用了两个端口号,一个用来API上传/访问图片,一个用来web管理

不建议在生产环境中使用这个用户信息,建议创建普通用户授权使用

查看容器日志

# docker logs -n 30 minio
MinIO Object Storage Server
Copyright: 2015-2025 MinIO, Inc.
License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
Version: RELEASE.2025-04-08T15-41-24Z (go1.24.2 linux/amd64)

API: http://172.17.0.2:9000  http://127.0.0.1:9000 
WebUI: http://172.17.0.2:9001 http://127.0.0.1:9001  

Docs: https://docs.min.io

日志中显示的是容器IP,但是在启动容器的时候已经把容器端口号给映射到宿主机上了,因此访问的时候可以直接使用宿主机的IP

二、web界面登录管理

地址:http://宿主机IP:9001

下图所示是修改minio的超级用户密码,不知道为啥修改不了,这个可以不用管

下图所示是设置使用管理员级别的Service Accounts,不建议这样操作

三、基本操作

1、创建一个普通用户授权访问指定的存储桶

先创建存储桶,留意默认权限



然后创建策略,根据已有的策略进行复制粘贴然后修改




最后创建普通用户,授权这个策略



使用这个用户账号密码登录minio上,就能看到这个用户只对这个存储桶有权限

不过页面上显示的有这个能创建存储桶的信息,不过不能创建,会报错的,估计是个bug

结果:
1.指定用户通过指定策略就对指定的存储桶有访问权限

2、创建一个用户组授权访问指定的存储桶

先新建俩用户,不给这俩用户设置访问策略

然后再新建一个组,选择上一步的俩用户作为组的成员

新建组使用的策略,设置指定的一个存储桶 (根据已有的策略进行复制粘贴然后修改)

给组设置访问策略

结果:
1.组内成员都没有单独设置策略权限,其访问存储桶的权限来自于所属的组
2.组内的各个成员都对某一个指定的存储桶有访问权限。

3、一个用户有权限访问多个指定的存储桶

在该用户使用的策略中增加新的存储桶
某个组访问多个指定的存储桶,策略类似,这个是指使用用户账号信息参数进行连接

4、用户的Access Key信息

默认创建的用户是没有Access Key信息的,需要手动创建,会自动使用该用户的存储策略

5、用户账号跟用户Access Key的区别

用户账号既可以登录web平台进行有关操作,也可以通过API接口的形式进行有关操作。
用户Access Key不能登录web平台,只能通过API接口的形式进行有关操作。

用户账号密码是供登录web控制台使用的
Service Accounts是供程序调用minio API接口使用的(也可以使用该用户的账号密码,不建议)

6、使用nginx代理minio使用二级路径访问的location配置

    location /files/ {
        proxy_pass       http://localhost:9000/;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header   Host             $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

    }

文件访问地址:https://www.aaa.com/files/桶名/文件名

默认创建的存储桶权限是private,表示的是私有的,外部用户不能读写,因此需要调整一下

在存储桶左侧最下面有个Anonymous,这个就是给匿名用户设置访问权限的,默认权限是空的

给Anonymous设置readonly权限,即表示外部用户有只读权限

然后再查看存储桶,会发现权限从private变成custom了

延申一下:(无聊的操作)
使用的是系统自带的只读策略,匿名用户设置访问权限的,配置为readonly,默认是对所有的存储桶
因此可以根据系统自带的这个只读策略,另外创建新的只读策略,然后修改一下只对指定的存储桶,然后再把这个只读策略配置到存储桶的Anonymous上

不过实际操作来看,不显示这个创建的指定存储桶的只读策略,因此没法这样操作

posted @ 2025-04-17 16:06  哈喽哈喽111111  阅读(466)  评论(0)    收藏  举报