MinIO

本文最后更新于 2026年8月28日

1.概述

MinIO是一个对象存储解决方案,它基于GO语言编写,提供了与Amazon S3兼容的API,并支持部署在服务器,Docker或K8s。

本文基于minio RELEASE.2024-07-29T22-14-52Z

2.服务端

2.1 二进制文件部署服务端

需要在相同shell环境,通过环境变量设置根用户用户名和密码

export MINIO_ROOT_PASSWORD=
export MINIO_ROOT_USER=

minio server 命令启动MinIO服务器. 这个路径参数/opt/miniodata确定服务器操作的文件夹。

nohup ./minio server   /opt/minio/miniodata  \
--config-dir /opt/minio/minioconfig  \
--console-address ":13399" \
--address ":13487"   > minio.log &

2.2 Docker部署服务端

docker run -d \
-p 3399:3399 \
-p 3487:3487 \
--name minio \
-e "MINIO_ACCESS_KEY=12345678" \
-e "MINIO_SECRET_KEY=12345678" \
-v /opt/minio/data:/data \
-v /opt/minio/config:/root/.minio \
minio/minio server /data --console-address ":3399" -address ":3487"

3.客户端

MinIO客户端mc命令行工具提供了一个现代化的替代方案, 支持文件系统和与Amazon S3兼容的云存储服务,适用于UNIX命令如 ls 、 cat 、 cp 、 mirror 和 diff 。

客户端命令的基本格式:

mc [GLOBALFLAGS] COMMAND --help

3.1 下载

3.2 管理客户端 admin

测试连接,myminio为之前通过alias命令设置好的某个服务端的别名

[root@QNXGXUUAOAW012 opt]# ./mc admin info myminio
●  127.0.0.1:13487
   Uptime: 10 months 
   Version: 2024-07-31T05:46:26Z
   Network: 1/1 OK 
   Drives: 1/1 OK 
   Pool: 1

┌──────┬───────────────────────┬─────────────────────┬──────────────┐
│ Pool │ Drives Usage          │ Erasure stripe size │ Erasure sets │
│ 1st  │ 16.0% (total: 91 GiB) │ 1                   │ 1            │
└──────┴───────────────────────┴─────────────────────┴──────────────┘

773 MiB Used, 1 Bucket, 656 Objects
1 drive online, 0 drives offline, EC:0

3.3 别名 alias

alias set将目标服务端http://127.0.0.1:13487设置为本地的别名myminio

[root@QNXGXUUAOAW012 opt]# ./mc alias set myminio http://127.0.0.1:13487  19j**********5UmjZW   zl0Fnit****************J8ANekt
Added `myminio` successfully.
[root@QNXGXUUAOAW012 opt]# 

3.4 拷贝文件 cp

递归拷贝服务端的uni******siaBucket(桶)下/2025/10/16路径下的所有文件到本地/opt/backup目录

[root@QNXGXUUAOAW012 opt]# ./mc cp myminio/uni******sia/2025/10/16 /opt/backup --recursive
...e865ea0bb3c698e394b85ab3.png: 61.36 KiB / 61.36 KiB ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 4.63 MiB/s 0s
[root@QNXGXUUAOAW012 opt]#

4.部署运维

生产环境需要用nginx反向代理时,官方文档提供了两种方案,相同子域名和不同子域名,这里先以相同子域名为例

如文件传输和管理控制台端口采用同一子域名minio.example.com,则nginx配置如下


server {
      listen 443 ssl;
      listen       [::]:443 ssl;
      server_name minio.example.com;
      client_max_body_size 100m;

      # 代理到其他端口
      location / {
      
         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-Proto $scheme;

         proxy_connect_timeout 300;
         proxy_http_version 1.1;
         proxy_set_header Connection "";
         chunked_transfer_encoding off;

         proxy_pass http://127.0.0.1:13487;
      }



      location /minio/ui/ {
         rewrite ^/minio/ui/(.*) /$1 break;
         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-Proto $scheme;
         proxy_set_header X-NginX-Proxy true;

         # This is necessary to pass the correct IP to be hashed
         real_ip_header X-Real-IP;

         proxy_connect_timeout 300;

         # To support websockets in MinIO versions released after January 2023
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection "upgrade";
         # Some environments may encounter CORS errors (Kubernetes + Nginx Ingress)
         # Uncomment the following line to set the Origin request to an empty string
         # proxy_set_header Origin '';

         chunked_transfer_encoding off;

         proxy_pass http://127.0.0.1:13399;
      }

   }

同时,minio的环境变量必须指定MINIO_BROWSER_REDIRECT_URL

export MINIO_BROWSER_REDIRECT_URL="https://minio.example.com/minio/ui"

"如果文章对您有帮助,可以请作者喝杯咖啡吗?"

微信二维码

微信支付

支付宝二维码

支付宝


MinIO
https://blog.liuzijian.com/post/minio/
作者
Liu Zijian
发布于
2024年8月15日
更新于
2026年8月28日
许可协议