背景:
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服務,問題解決。