Kubernetes部署Neo4j访问7474端口报WebSocket连接错误如何解决
Neo4j 部署在Kubernetes中Browser访问WebSocket连接失败解决方案
报错信息:ServiceUnavailable: WebSocket connection failure. Due to security constraints in your web browser, the reason for the failure is not available to this Neo4j Driver.
1. 检查端口暴露配置
- Neo4j Browser访问依赖两个核心端口:
7474(HTTP管理端口,用于加载Browser界面)、7687(Bolt协议端口,WebSocket实际通信使用),必须同时对外暴露两个端口 - 检查K8s Service配置是否同时开放了7474和7687的端口映射,NodePort/LoadBalancer/Ingress模式都需要同步配置两个端口的对外访问规则
- 若使用Ingress暴露服务,需额外配置Ingress规则支持WebSocket长连接:Nginx Ingress需要添加注解
nginx.ingress.kubernetes.io/websocket-services: "你的neo4j服务名"
2. 修正Neo4j数据库配置
- 确认neo4j.conf中以下配置项取值正确:
# 开启bolt连接 dbms.connector.bolt.enabled=true # 填写客户端实际能访问到的公网IP/域名+7687端口,不要填127.0.0.1 dbms.connector.bolt.advertised_address=<对外访问IP/域名>:7687 # 开启http管理端口 dbms.connector.http.enabled=true # 填写客户端实际能访问到的公网IP/域名+7474端口 dbms.connector.http.advertised_address=<对外访问IP/域名>:7474
3. 调整Browser连接参数
- 首先修正访问地址格式,不要使用问题中出现的
http://:7474格式,必须填写完整的IP/域名,格式为http://<你的IP/域名>:7474 - 打开Neo4j Browser界面后,点击左侧数据库连接图标,在连接地址处手动填写完整的bolt地址:
bolt://<你的IP/域名>:7687,再输入用户名密码尝试连接 - 如果为服务配置了TLS加密,需要把协议头换成
bolts://
4. 适配浏览器安全策略
- 如果你通过HTTPS协议访问Neo4j Browser界面,浏览器会禁止发起未加密的
ws://(WebSocket)请求,此时必须给Bolt端口也配置TLS加密,使用wss://协议连接Bolt端口
内容的提问来源于stack exchange,提问作者fredrickson bande
相关产品推荐
相关产品推荐

