首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在反向代理后面运行Neo4J (web)并连接到“Neo4J://localhost:7687”

在反向代理后面运行Neo4J (web)并连接到“Neo4J://localhost:7687”
EN

Stack Overflow用户
提问于 2019-01-17 03:32:17
回答 1查看 874关注 0票数 2

我在Traefik后面的Docker中运行Neo4J。web界面(7474)显示在https上,其工作方式与预期一致。

通过web界面,我尝试连接到bolt://localhost:7687,我希望它能工作,毕竟它是在同一个容器中运行的。相反,我收到的消息是:

ServiceUnavailable: WebSocket连接失败。由于web浏览器中的安全限制,此Neo4j驱动程序无法提供失败原因。请使用浏览器开发控制台确定失败的根本原因。常见原因包括数据库不可用、使用了错误的连接URL或临时网络问题。如果启用了加密,请确保将浏览器配置为信任Neo4j配置为使用的证书。WebSocket readyState为:3

反向代理使用由我们的公司CA签署的内部证书。Neo4J容器具有可用的根证书。连接的客户端也有可用的根证书。

当尝试连接到容器本身中的localhost:7687时,它会按预期工作;Cypher shell也是如此。

GitHub上也有一些关于Java版本的帖子,可能会导致这些问题--我尝试过OracleJDK8,OpenJDK 8 (HotSpot & J9)。

浏览器似乎也不相关--所描述的问题在FF、Chrome和Safari中重现。

EN

回答 1

Stack Overflow用户

发布于 2019-10-18 16:58:55

我也遇到过同样的情况,下面是我的解决方案,以便在使用Traefik2.0.2的docker群中运行Neo4j实例(在我的例子中是猎犬)。由于Traefik的新路由器概念,它完全冗长且难以阅读,因为您必须定义五个路由器。但至少它可以工作,让你可以通过wss和bolt访问wss界面和实际的数据库。也许可以简化我的配置。

此外,我在Traefik的文件提供程序提供的动态配置文件中指定了redirectScheme中间件和由内部PKI签名的证书。

哈!

代码语言:javascript
运行
复制
version: '3.7'

services:
  neo4j:
    image: neo4j:latest
    networks:
      - traefiknet
    volumes:
      - type: volume
        source: data
        target: /data
      - type: volume
        source: logs
        target: /logs
      - type: volume
        source: conf
        target: /conf
    environment:
      - NEO4J_AUTH=neo4j/somepassword
      - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
    deploy:
      replicas: 1
      restart_policy:
        condition: any
      placement:
        constraints:
          - node.hostname == node-02
      labels:
        - traefik.http.services.neo4j.loadbalancer.server.port=7474
        - traefik.http.routers.neo4j.rule=Host(`neo4j.dockerswarm.domain.com`)
        - traefik.http.routers.neo4j-secure.rule=Host(`neo4j.dockerswarm.domain.com`)
        - traefik.http.routers.neo4j.service=neo4j
        - traefik.http.routers.neo4j-secure.service=neo4j
        - traefik.http.routers.neo4j.middlewares=httpsredirection@file
        - traefik.http.routers.neo4j-secure.tls=true
        - traefik.http.routers.neo4j.entrypoints=web
        - traefik.http.routers.neo4j-secure.entrypoints=web-secure

        - traefik.http.services.neo4jdb.loadbalancer.server.port=7687
        - traefik.http.routers.neo4jdb.rule=Host(`neo4jdb.dockerswarm.domain.com`)
        - traefik.http.routers.neo4jdb-secure.rule=Host(`neo4jdb.dockerswarm.domain.com`)
        - traefik.http.routers.neo4jdb.service=neo4jdb
        - traefik.http.routers.neo4jdb-secure.service=neo4jdb
        - traefik.http.routers.neo4jdb.middlewares=httpsredirection@file
        - traefik.http.routers.neo4jdb-secure.tls=true
        - traefik.http.routers.neo4jdb.entrypoints=web
        - traefik.http.routers.neo4jdb-secure.entrypoints=web-secure

        - traefik.tcp.services.neo4jdb.loadbalancer.server.port=7687
        - traefik.tcp.routers.neo4jdb.rule=HostSNI(`neo4jdb.dockerswarm.domain.com`)
        - traefik.tcp.routers.neo4jdb.service=neo4jdb
        - traefik.tcp.routers.neo4jdb.tls=true

networks:
  traefiknet:
    external: true

volumes:
  data:
  logs:
  conf:
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54224081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档