Nginx反向代理minio踩坑记录

背景:

minio是3台服务器集群模式。所以想通过nginx来做负载,进行反向代理访问。

1.Nginx配置中location设置问题

问题描述:

输入地址:https://hcmminio.xxx.com/minio后,浏览器无法打开页面。会有类似404的错误。通过F12调试发现有跨域错误,类似如下:

Referrer Policy: strict-origin-when-cross-origin

其实根本原因,不是跨域的问题,是因为nginx的配置有问题,错误的配置如下(注意红色字体部分):

http {
    ...
    upstream minioconsole {
        server 192.10.16.203:9001; #minio集群地址(console)
        server 192.10.16.204:9001;
        server 192.10.16.210:9001;
    }

    server {
        listen 443 ssl;
        server_name hcmminio.xxx.com;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_certificate      /etc/nginx/ssl/xxx.com.pem;
        ssl_certificate_key  /etc/nginx/ssl/xxx.com.key;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        下面的location不能是/minio,因为minio访问的地址没有这个路径,所以报错,这里必须是跟/
        location /minio {
            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_pass         http://minioconsole;
        }

    }
}

如上面示例,将 location /minio {修改为  location / { 就能访问登录页面了。

2.Nginx配置中,WebSocket connection的错误

问题描述

在浏览桶中的列表的时候,始终在loading,无法加载桶内的文件列表。并且是在https协议的情况下才有,通过F12调试,可以看到有很多的WebSocket connection的错误。

 这个根本原因可以参考https://www.cnblogs.com/joshua317/p/15217735.html 文章内容所述。

解决办法是在nginx配置中,添加如下参数(红色字体标注)

http {
    ...
    upstream minioconsole {
        server 192.10.16.203:9001; #minio集群地址(console)
        server 192.10.16.204:9001;
        server 192.10.16.210:9001;
    }

    server {
        listen 443 ssl;
        server_name hcmminio.xxx.com;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_certificate      /etc/nginx/ssl/xxx.com.pem;
        ssl_certificate_key  /etc/nginx/ssl/xxx.com.key;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        
        location / {
            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";
            proxy_pass         http://minioconsole;
        }

    }
}

重新加载nginx配置(nginx  -s reload)或重启nginx服务,问题解决。

 

posted @ 2024-03-14 16:30  荒野游侠  阅读(2042)  评论(0编辑  收藏  举报