通过域名访问Minio服务器时无法获取存储桶项[WebSocket错误]
问题分析与解决方案
直接通过159.223.90.95:9000访问Minio正常,但使用inventory.vmplay.ml域名访问时出现WebSocket错误,核心问题出在Apache代理配置的端口匹配或WebSocket代理支持上,结合给出的配置文件,具体分析和修复方案如下:
核心问题定位
- 端口映射错误:你直接访问的是Minio API端口
9000,但inventory.vmplay.ml的代理目标是9001(大概率是Minio控制台端口),如果需求是通过该域名访问Minio API,端口映射完全错误。 - WebSocket代理配置不完善:若
inventory.vmplay.ml用于访问Minio控制台(9001),当前的WebSocket rewrite规则缺少必要模块支持和头部传递,导致控制台依赖的实时WebSocket通信失败。
修复方案
方案1:若inventory.vmplay.ml用于访问Minio API(9000)
直接修正代理端口,替换inventory.vmplay.ml.conf内容为:
<VirtualHost *:80> ServerName inventory.vmplay.ml ProxyPass / http://159.223.90.95:9000/ ProxyPassReverse / http://159.223.90.95:9000/ </VirtualHost>
Minio API本身不依赖WebSocket,此配置可直接解决访问问题。
方案2:若inventory.vmplay.ml用于访问Minio控制台(9001)
需确保Apache启用必要模块,并完善WebSocket代理配置:
- 启用Apache依赖模块:
a2enmod proxy proxy_http proxy_wstunnel rewrite systemctl restart apache2
- 修正
inventory.vmplay.ml.conf的WebSocket代理规则:
<VirtualHost *:80> ServerName inventory.vmplay.ml ProxyPass / http://159.223.90.95:9001/ ProxyPassReverse / http://159.223.90.95:9001/ RewriteEngine on RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteCond %{HTTP:Connection} upgrade [NC] RewriteRule ^/?(.*) ws://159.223.90.95:9001/$1 [P,L] </VirtualHost>
- 检查Minio控制台启动参数,确保允许通过
inventory.vmplay.ml域名访问:
启动Minio时添加--console-address ":9001",并设置环境变量MINIO_SERVER_URL="http://inventory.vmplay.ml"以信任该域名。
验证步骤
- 重启Apache服务:
systemctl restart apache2 - 清除浏览器缓存后访问
inventory.vmplay.ml,检查WebSocket错误是否消失。
内容的提问来源于stack exchange,提问作者Vishnu Mali
相关产品推荐
相关产品推荐

