使用隧道或 NAT 时通过 Bolt 连接
本文旨在提供一种通过 Bolt 连接 Neo4j 数据库的方法,通过 Neo4j Browser 连接,适用于 Bolt 主机与实例 IP 不同以及 Bolt 主机 IP/端口是动态的情况。
除非设置了 dbms.connector.bolt.advertised_address=<server-name>:<port>
,否则 Neo4j Browser 会使用实例的私有 IP 作为 Bolt 主机 IP。例如,当使用 SSH 隧道访问 Neo4j 实例时,客户端(例如 Neo4j Browser)会使用类似 127.0.0.1:port 的地址,并将之前保存的 Bolt 主机 URL 更改为使用实例 IP,这将导致无法连接。
一种解决方法是在 neo4j.conf 中指定 dbms.connector.bolt.advertised_address=<server-name>:<port>
(其中 <server-name>:<port> 是所需 Bolt 主机的 DNS 名称和端口)。然而,如果在某些环境中主机/端口每次都是自定义的,通过上述配置将它硬编码到 neo4j.conf 中可能不适用,因为 Bolt 应该在通过 SSH 隧道映射的 IP/端口上监听。防火墙内的一些客户端可能不使用隧道,因此为每个客户端设置隧道以匹配硬编码地址可能不是理想选择。
在这种情况下,在 Neo4j Browser 的登录/连接页面提供自定义的 dbms.connector.bolt.advertised_address=<server-name>:<port>
值可能不会总是生效,例如在页面刷新时,浏览器可能会忘记输入的 Bolt URL 并用默认的 advertised address 覆盖它。
为了防止用户指定的配置被覆盖,可以在链接到 Neo4j Browser 时附带一个 connectUrl 参数
例如 http://localhost:7474/browser/?connectURL=127.0.0.1:7687 或者,例如 http://browser.neo4j.com/?connectURL=neo4jdb.xxyyzz.com:26000。
如果 http://browser.neo4j.com 上有一个托管的 Neo4j Browser,它将把 Bolt URL 设置为 http://neo4jdb.xxyyzz.com:26000 并尝试连接。因此,connectURL 参数可能适用于上述用例,即客户端使用隧道、网络地址转换和其他非常规访问方法的情况。
此页面有帮助吗?