备案 控制台
学习
实践
活动
专区
工具
TVP
写文章
专栏首页 IT者 MinIO+Nginx开启https域名访问
5 1

海报分享

MinIO+Nginx开启https域名访问

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

环境

  • 文章建立在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 Hosthttp_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:端口号,如果硬是改成域名访问会报错

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客: https://www.itze.cn/ 复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
展开阅读全文