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服务,问题解决。