首页 > 解决方案 > 无法通过 dockerized Traefik 访问 dockerized Neo4j webinterface

问题描述

我正在尝试在traefik作为反向代理的帮助下访问 dockerized neo4j -instance 的 Web 界面。

我可以通过导航到 neo4j-instance 的 Web 界面myDomain.demo:7479/browser。但是我希望能够通过简单地导航到它来访问它myDomain.demo/neo4j/myNeo,因此在同一台机器上使用多个 neo4j 实例时我不必记住端口号。遗憾的是,我无法以这种方式访问​​网络界面,而是显示一个空白页面,要求我提供凭据。我想这至少是一个好兆头,因为通常在访问 Web 界面时,我必须将我的 db-credentials 输入到 GUI 掩码中才能连接到我的 neo4j-db。但是,这应该看起来像这样,而不是我看到的简单的浏览器弹出窗口。

很明显,我不能成为第一个尝试访问多个 Neo4j 实例及其在反向代理后面的相应 Web 界面的人,但我不知道该怎么做。这是我的设置命令:

Dockerized Traefik-Proxy

docker run --name proxy -p 80:80 -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock \
traefik \
--api --loglevel=debug --entryPoints="Name:http  Address::80" \
--docker --docker.endpoint="unix://var/run/docker.sock"

Dockerized Neo4j-Instance(在没有代理的情况下工作正常)

docker run --name myNeo -d --publish=7479:7474 --publish=7701:7687 \
--label traefik.frontend.rule="Host:myDomain.demo;Path:/neo4j/myNeo" \
--label traefik.backend=myNeo \
--label traefik.port=7474 \
neo4j:latest

(为了简单起见,我在 neo4j-docker 命令中删除了多个卷分配。)

我注意到当手动导航到 时myDomain.demo:7479,我被重定向到myDomain.demo:7479/browser. 也许 Traefic 无法处理该重定向,这就是为什么我得到一个没有错误的空白页面的原因?

提前致谢。

标签: dockerneo4jreverse-proxytraefik

解决方案


三件事:

  1. Path规则仅是完全匹配。Path:/example会匹配/example,但不会/example/bacon。您可能想PathPrefix改用。
  2. 如果您不能运行myDomain.demo:7479/neo4j/myNeo/browser,那么您将无法使用子目录进行路由。您需要将应用程序配置为侦听子路径。Neo4j 需要知道它的路径,以便它可以生成链接等。
  3. 一旦您可以让 neo4j 在子路径上工作,您就可以使用 traefik 路由到自定义域/端口。

推荐阅读