前言:按照文章顺序操作,踩过的坑都避开了!

环境

  • 文章建立在MinIO服务是通过Docker容器创建
  • 假设本文以下使用域名:minio.itze.cn
  • 假设服务器IP:123.123.123.123

前期准备

1.将域名解析到服务器IP

查看解析成功示例,windows下使用命令

ping minio.itze.cn -t

出现如上图所示,说明域名已经解析到对应的IP地址,会有人问:去哪里添加解析,答:去购买域名的厂商控制台,比如你的域名是阿里云注册的,就登陆阿里云控制台有相关解析操作流程

2.申请域名对应的SSL免费证书,PS:资金富裕的直接付费买

这里提供一个申请免费的地址,每次申请有效期1年,https://console.cloud.tencent.com/ssl 申请SSL注意事项:按照提示,需要有验证域名是你的操作,一般两种方式,1.DNS,2.文件,建议使用推荐的方法添加一条解析即可,一般十几分钟就能颁发证书,证书颁发后选择-下载-Nginx

nginx反向代理MinIO API地址并配置https

这里利用到了Nginx的反向代理,配置文件如下,建议不要改动原来的nginx.conf文件,另外再单独创建一个nginx_minio.conf文件在默认的nginx.conf文件中加入一句话,位置放到**http{}**块中

include /你的nginx_minio.conf的路径/*.conf;

nginx_minio.conf 配置完整内容

#itze.cn ProxyStart
upstream minio {
server 127.0.0.1:9000 fail_timeout=0;
}
server {
listen 443 ssl;
server_name minio.itze.cn;

ssl_certificate ./cert/你的.crt; #这里换成你的证书上传的位置
ssl_certificate_key ./cert/你的.key; #这里换成你的证书上传的位置
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
client_max_body_size 30m; #最大上传限制

location / {
root html;
index index.html index.htm;
proxy_pass https://minio;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect off;
proxy_connect_timeout 310;
proxy_send_timeout 310;
proxy_read_timeout 310;

}
#异常状态码跳转
error_page 307 https://www.itze.cn;
error_page 400 https://www.itze.cn;
error_page 403 https://www.itze.cn;
error_page 404 https://www.itze.cn;
error_page 500 https://www.itze.cn;
error_page 502 https://www.itze.cn;

}
#itze.cn ProxyEnd

#http forced jump https http强制跳转https配置
server{
listen 80;
server_name minio.itze.com;
rewrite ^(.*)$ https://minio.itze.com;
location ~ / {
index index.html index.php index.htm;
}
}

MinIO 配置https

1.证书准备

将申请的SSL证书 .key结尾的重命名为:private.key和 .crt结尾的重命名为:public.crt 别问为什么,官方规定,不信自己看官方文档:https://min.io/docs/minio/linux/operations/network-encryption.html?ref=docs-redirect 然后将private.key和public.crt两个文件放到MinIO目录certs下面:/你的minio目录/config/certs,算了还是上个图吧

2.容器更改

创建容器命令更改为以下,注意,如果原来路径下有文件存在,把原来的minio容器删掉重新创建不会有影响!

docker run -d -p 9000:9000 -p 50000:50000 --name minio \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=123456" \
-e "MINIO_SERVER_URL=https://minio.itze.cn " \
-v /root/minio/data:/data \
-v /root/minio/config:/root/.minio \
minio/minio server /data --console-address ":50000" -address ":9000"

命令解释看文章:Docker部署MinIO

3.访问

控制台访问地址:https://minio.itze.cn:50000 API访问地址:https://minio.itze.cn 注意:这里如果直接访问API的访问地址,MinIO会307默认跳转到控制台页面,控制台登录页面我们当然不想让外部知道,上面的nginx_minio.conf已经做了错误页面配置,如果你的不生效,请检查nginx的默认配置文件nginx.conf中有没有以下一句话:同样放到http{}块中即可,记得重启nginx服务

proxy_intercept_errors on;

重点注意事项

这里稍微解释一个命令:-e “MINIO_SERVER_URL=https://minio.itze.cn “ 这也是上面nginx里面为什么会那样配置的原因 这个地址是MioIO API访问请求的地址,这里创建容器时是什么,无论在MinIO控制台或者是通过API代码分享的文件链接的前缀就是这个!,这里为什么我们直接写成了域名,而不是网上大部分说的IP+端口号,原因就是文章上面的nginx_minio.conf已经做了反向代理,访问https://minio.itze.cn 就等于访问 https://123.123.123.123:9000 明白了吗 但是如果浏览器直接访问后面这个IP+端口的浏览器会报SSL证书不安全,因为我们签发证书是对minio.itze.cn这个域名主题 MINIO_SERVER_URL等于什么下面分享链接的红色字体就是什么,如果你用的是服务器的外网域名+端口,下面就是IP:端口号,如果硬是改成域名访问会报错