MENU

Debian11 安装Minio二进制版本 并使用Nginx设置域名反向代理

May 28, 2022 • Minio

下载

官网下载地址:Linux二进制文件

或者直接指令下载

mkdir /home/minio
cd /home/minio
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio

wget如果下载缓慢就直接下载二进制文件

然后再上传到服务器的对应目录

启动

启动环境配置

这里我使用的是screen,也可以使用nohup启动

screen -R minio
启动参数
MINIO_ROOT_USER=admin \
MINIO_ROOT_PASSWORD=admin123 \ 
./minio server /mnt/data \
--console-address ":9001" --address ":9000"

其中MINIO_ROOT_USER和MINIO_ROOT_PASSWORD是登录控制台的初始的账号密码,如果不配置的话,会默认为minioadmin和minioadmin。
--console-address是控制台的地址以及端口的设置
--address是后端Api的地址以及端口的设置
到此为止,就可以直接访问服务器的 ip:9001 进行访问控制台了,如果是装在本地的话就直接访问localhost:9001即可

主页截图
QQ截图20220528024624.png
QQ截图20220528024650.png

Nginx配置

SSL配置以及域名配置

这里的证书我使用的是宝塔面板的let's Encrypt一键生成,域名也是用宝塔的界面直接配置的
bt1.png

反向代理配置 (暂未解决api端口反向代理后无法调用的问题)

这里参考官方文档给出的配置
关键代码

server {
 listen 80;
 server_name example.com;

 # To allow special characters in headers
 ignore_invalid_headers off;
 # Allow any size file to be uploaded.
 # Set to a value such as 1000m; to restrict file size to a specific value
 client_max_body_size 0;
 # To disable buffering
 proxy_buffering off;

 location / {
   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 Host $http_host;

   proxy_connect_timeout 300;
   # Default is HTTP/1, keepalive is only enabled in HTTP/1.1
   proxy_http_version 1.1;
   proxy_set_header Connection "";
   chunked_transfer_encoding off;

   proxy_pass http://localhost:9000; # If you are using docker-compose this would be the hostname i.e. minio
   # Health Check endpoint might go here. See https://www.nginx.com/resources/wiki/modules/healthcheck/
   # /minio/health/live;
 }
}
  • 替换http://localhost:9000 为你的域名
  • client_max_body_size 1000m是限制请求数据的大小
    设置成0就是关闭客户端检查请求数据的大小
  • Nginx 默认缓冲响应。要禁止 Nginx 缓冲 MinIO 对临时文件的响应,请设置proxy_buffering off;. 这将改善客户端请求的第一个字节的时间。
  • Nginx 默认不允许特殊字符。设置ignore_invalid_headers off;为允许带有特殊字符的标题。

这里配置完毕之后,如果你反向代理的端口是后端api的端口9000,那么直接访问域名会自动跳转到控制台的端口9001,如果你是在云主机的环境下,还需要打开对应的9001或者9000的防火墙端口才可以正常访问,或者再配置一个域名再反向代理一个端口,例如console.xxx.com为控制台的地址(代理9001端口),api.xxx.com为api的地址(代理9000端口),这时候如果我直接使用minio提供的javasdk进行请求该域名,会报以下错误
报错.png
使用的key都是正确的,但是就是报拒绝访问

目前的解决方案

将api的反向代理去掉,直接使用 ip:port (ip加端口)的方式或者domain:port(域名加端口)访问,就正常调用,也就是说绕过nginx代理的话,就可以正常调用,不知道是不是nginx反向代理的话会丢失一些请求头之类的导致无法正常请求。

补充

上面的方法,在使用控制台分享文件的时候,分享的url地址会是内网的ip或者本机的ip地址,如果想要设置直接生成域名的话,可以直接在启动前添加变量

export MINIO_SERVER_URL=https://xxx.com 或者 http://xxx.com

参数参考QQ截图20220528023823.png
文档地址
之后再启动就可以了,docker同理 添加 --evn MINIO_SERVER_URL=xxx 或者-e 'MINIO_SERVER_URL=xxx'

domain.png

Archives QR Code
QR Code for this page
Tipping QR Code