使用隧道或 NAT 时通过 Bolt 连接
本文旨在提供一种方法,通过 Neo4j 浏览器使用 Bolt 连接 Neo4j 数据库,当 Bolt 主机与实例本身的 IP 不同且 Bolt 主机 IP/端口是动态的情况下。
除非在 dbms.connector.bolt.advertised_address=<server-name>:<port> 中进行设置,Neo4j 浏览器会使用实例的私有 IP 作为 Bolt 主机 IP,但例如在使用 SSH 隧道访问 Neo4j 实例时,客户端(如 Neo4j 浏览器)会使用 127.0.0.1:port,并将之前保存的 Bolt 主机 URL 改为使用实例 IP,导致无法连接。
一种变通方法是将在 dbms.connector.bolt.advertised_address=<server-name>:<port> 写入 neo4j.conf(其中 <server-name>:<port> 为期望的 Bolt 主机的 DNS 名称和端口)。然而,如果在某些环境中主机/端口每次都是自定义的,使用上述配置在 neo4j.conf 中硬编码可能不可行,因为 Bolt 应该监听通过 SSH 隧道映射的 IP/端口。防火墙内的一些客户端可能不使用隧道,因此为每个客户端都设置隧道以匹配硬编码地址并不是理想的做法。
在这种情况下,在 Neo4j 浏览器登录/连接页面提供自定义的 dbms.connector.bolt.advertised_address=<server-name>:<port>,可能并不总是生效,例如在页面刷新时,浏览器可能会忘记输入的 Bolt URL 并用默认的 advertised address 覆盖它。
为了防止用户指定的配置被覆盖,可以在链接到 Neo4j Browser 时附加一个 connectUrl 参数。
例如 https://: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 参数对于上述使用隧道、网络地址转换以及其他非传统访问方式的场景非常有用。
此页面有帮助吗?