使用隧道或 NAT 时通过 Bolt 连接
本文旨在提供一种通过 Bolt 连接到 Neo4j 数据库的方法,通过 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,这将无法连接。
一种解决方法是在 neo4j.conf 中指定 dbms.connector.bolt.advertised_address=<server-name>:<port>
(其中 <server-name>:<port> 是所需的 Bolt 主机的 DNS 名称和端口)。但是,如果某些环境中的主机/端口每次都自定义,则通过上述配置使用 neo4j.conf 对其进行硬编码可能不可用,因为 Bolt 应该监听通过 SSH 隧道映射到的 IP/端口。防火墙内的某些客户端可能不使用隧道,因此为每个客户端设置隧道以匹配硬编码地址可能不是理想的。
在这种情况下,在 Neo4j 浏览器登录/连接页面提供自定义 dbms.connector.bolt.advertised_address=<server-name>:<port>
可能并不总是尊重该值,例如在页面刷新时,浏览器可能会忘记输入的 Bolt URL 并将其覆盖为默认的广告地址。
为了防止用户指定的配置被覆盖,可以在指向 Neo4j 浏览器的链接中传递 connectUrl 参数
例如 http://localhost:7474/browser/?connectURL=127.0.0.1:7687 或者,例如 http://browser.neo4j.com/?connectURL=neo4jdb.xxyyzz.com:26000。
如果托管的 Neo4j 浏览器在 http://browser.neo4j.com 上可用,它会将 Bolt URL 设置为 http://neo4jdb.xxyyzz.com:26000 并尝试连接。因此,connectURL 参数可能对上述用例有用,在这些用例中,客户端使用隧道、网络地址转换和其他非传统访问方法。
此页面是否有帮助?