【问题标题】:Set up neo4j with nginx as proxy in AWS EC2 (Ubuntu 16 AMI)在 AWS EC2 (Ubuntu 16 AMI) 中使用 nginx 作为代理设置 neo4j
【发布时间】:2018-12-02 09:40:25
【问题描述】:

我一直在尝试在 ubuntu 中设置 neo4j 服务器(安装在 Amazon AWS EC2 中),我需要从远程机器访问它。 我关注了Neo4j Doc 和这个:stackoverflow question,但发现我无法从我的办公网络访问它。所以我决定将 Nginx 设置为代理。 我关注了多个链接:-

  1. Dzone article
  2. Stackoverflow Question

有了这些,我可以访问 Neo4j 服务器,但无法连接到它的数据库。 这是Browser Snapshot when remotely accessing the Neo4j server installed in Ec2 behind Nginx proxy 如果我在这里遗漏了什么,有人可以帮助我吗?我应该怎么做才能访问数据库?


更新: 正如@FrobberOfBits 提到的,我更新了我的 Neo4j 配置如下:

Network Connector Configuration of Neo4j

但是当我导航到 Neo4j Browser 时,我还是得到了这个:

Neo4j browser snapshot

我应该给主机什么?我试着给 bolt://ec2-XXXXX.compute-1.amazonaws.com:7687 。它没有工作:(

【问题讨论】:

    标签: nginx amazon-ec2 neo4j ubuntu-16.04


    【解决方案1】:

    我刚刚让 neo4j 开始工作。 对于 AWS EC2 我必须改变两件事:

    1. 实例的 AWS 安全组

      允许从任何地方对 7474 和 7687 进行 TCP 访问(只需将默认 http 端口 in this aws guide 替换为 neo4j 端口即可) 7474 用于对 neo4j 的 http 请求,而 7687 用于螺栓。

    2. 编辑/etc/neo4j/neo4j.conf文件中的配置

      这个配置文件编辑太混乱了。我浏览了这些 cmets:

      我编辑了以下内容:

      • dbms.connectors.default_listen_address=0.0.0.0
      • dbms.connectors.default_advertised_address=<elastic ip> - 我刚刚映射了一个弹性 ip 并使用了它
      • 然后我通过取消注释并添加 0.0.0.0 来设置其余端口,以确保(我认为关键是使用广告地址)
        • dbms.connector.bolt.enabled=true
        • dbms.connector.bolt.listen_address=0.0.0.0:7687
        • dbms.connector.http.enabled=true
        • dbms.connector.http.listen_address=0.0.0.0:7474
        • dbms.connector.https.enabled=true
        • dbms.connector.https.listen_address=0.0.0.0:7473 令人困惑的部分是listen_addressadvertised_address。我的理解是 Neo4j Web 应用程序 javascript 使用后者来知道在哪里连接,第一个就像为 mysql 设置 0.0.0.0 以作为远程服务监听。

    我也不确定你为什么需要 nginx;最后,我只是想在 aws ec2 实例中设置 neo4j。 以下是一些帮助我设置的 neo4j 链接

    最好的问候,

    史蒂文森·李

    【讨论】:

      【解决方案2】:

      人们在云设置中遇到的一个常见问题是dbms.connectors.default_advertised_address 设置。这是数据库用来向客户端(包括浏览器)宣传自己的地址。

      在您的屏幕截图中,“主机”字段是空白的,但应该填充一些内容。如果那个东西是 10...* 地址,那就是问题所在;数据库正在使用不可路由的地址为自己做广告。

      您应该确保 default_advertised_address 是一个外部有效的 IP 地址,并且在浏览器的主机字段中使用。

      【讨论】:

      • 你好弗罗伯。我明白你在说什么。但通常如果 neo4j 设置正确,即与数据库的螺栓连接成功,则该 Host 字段不会显示在浏览器中。
      • 谈谈Neo4j的网络连接器配置: 1) 首先提到: # 默认配置下Neo4j只接受本地连接。 # 要接受非本地连接,请取消注释此行:#dbms.connectors.default_listen_address=0.0.0.0 ..... 所以我取消了它的注释。
      • 2) 接下来,正如您所说,它是这样写的: # 客户端可以访问此服务器的地址。这可能是服务器的 IP 地址或 DNS 名称,或者 # 它可能是位于服务器前面的反向代理的地址。对于下面的 # 个单独的连接器,此设置可能会被覆盖。 #dbms.connectors.default_advertised_address=localhost .....这里我想我需要将它设置为nginx代理IP或DNS?而且我想它应该与我安装了 neo4j 和 nginx 的 EC2 的公共 DNS 相同(我在设置过程中没有取消注释,所以请在这里帮我做什么..)
      • 3) 最后还有一堆 bolt、http 和 https 配置: # Bolt connector dbms.connector.bolt.enabled=true #dbms.connector.bolt.tls_level=OPTIONAL #dbms.connector.bolt .listen_address=:7687 # HTTP 连接器。必须只有一个 HTTP 连接器。 dbms.connector.http.enabled=true #dbms.connector.http.listen_address=:7474 #HTTPS 连接器。可以有零个或一个 HTTPS 连接器。 dbms.connector.https.enabled=true #dbms.connector.https.listen_address=:7473
      • 我已将 dbms.connector.bolt.listen_address 取消注释为 :17687 并将 dbms.connector.http.listen_address 取消注释为 :17474 ,如此处给出的 Dzone Link 。因此,我在 nginx 中设置了这些配置。但那些似乎不起作用:(
      猜你喜欢
      • 1970-01-01
      • 2023-03-02
      • 2018-01-21
      • 2021-07-01
      • 2021-08-27
      • 1970-01-01
      • 2013-05-20
      • 2011-09-05
      • 2018-02-02
      相关资源
      最近更新 更多