从docker-compose启动时无法访问NiFi UI

时间:2018-03-04 05:17:50

标签: docker docker-compose apache-nifi

对于我的生活,我无法进入NiFi Web UI。这让我讨厌安全。

TLDR;我找不到在Docker容器中启动NiFi并仍然访问UI的正确方法。这是我尝试过的(8小时):

ph_with_gg()

我转到docker run --name nifi \ -p 8080:8080 \ -d \ apache/nifi:latest - 超时。同上localhost:8080/nifi

127.0.0.1 - IP网关为docker inspect nifi,实际IP为172.20.0.1。分别为172.0.0.2和超时。

开始随机尝试:

Invalid Host Header

我还为尽可能少的堆栈构建了一个完整的# I tried localhost, 0.0.0.0, various IP addresses docker run --name nifi \ -p 8080:8080 \ -e NIFI_WEB_HTTP_HOST=${hostname-here} -d \ apache/nifi:latest 。一切都有效,除了:

docker-compose.yml

没有变化。你能救我吗?

更新1

我使用了以下评论中链接的repo中的nifi: image: apache/nifi:latest hostname: nifi depends_on: - zookeeper - broker - schema_registry - nifi-registry ports: - "8080:8080" 文件;谢谢@Chaffelson。仍处理docker-compose.yml的超时。所以我用码头机器旋转了一滴液。

服务开始正常,日志表明Jetty服务器适用于NiFi Registry和NiFi。我可以在本地机器上完全像我一样访问NiFi注册表@ localhost

我无法访问<host ip>:18080/nifi-registry - 我得到<host ip>8080/nifi回复。

所以我添加到invalid host header

docker-compose.yml

Jetty服务器无法启动。洞察?

更新2

从日志中,仅使用environment: # Tried both with and without quotes NIFI_WEB_HTTP_HOST: "<host-ip>"

docker run --name nifi -p 8080:8080 -d apache/nifi:1.5.0其中[NiFi Web Server-24] o.a.n.w.s.HostHeaderSanitizationCustomizer Request host header [45.55.36.15:8080] different from web hostname [348146fc286f(:8080)]. Overriding to [348146fc286f:8080/nifi]是主机IP。

这是我问题的症结所在。

更新3

我在本地计算机上禁用了45.55.36.15(防火墙)。我现在可以通过ufw访问nifi了。实际访问远程主机没有任何进展(这就是所有这一点)。

3 个答案:

答案 0 :(得分:3)

很抱歉听到您遇到此问题。在Apache NiFi 1.5.0中,启用了更严格的主机头保护,以防止主机头中毒攻击。不幸的是,我们已经看到,对于不熟悉配置的用户来说,这没有充分记录。作为回应,我们已对master进行了更改,并将包含在即将发布的1.6.0版本中:

  • nifi.properties添加了一个新属性nifi.web.proxy.host,该属性接受以逗号分隔的有效主机标头列表,与Jetty主机名无关
  • Docker configuration has been updated允许来自运行命令的代理白名单
  • 主机头保护仅在“安全”NiFi实例上强制执行。这应该使用户更容易快速部署沙盒环境,就像您在这种情况下那样做

要立即修复,此命令应该有效:

docker run --name nifi \
  -p 8080:8080 \
  -e NIFI_WEB_HTTP_HOST=172.20.0.1
  -d \
  apache/nifi:latest

您还可以使用ModHeader之类的Chrome扩展程序拦截请求,以覆盖Host标头,并在与预期主机匹配时验证其是否有效。除了Daniel的出色添加之外,这应该会帮助您,直到下一个版本发布。

答案 1 :(得分:2)

我使用this和类似的docker compose文件进行自动NiFi Python客户端测试。它看起来与你的表面相似,并且在我自己的Ubuntu(Travis-CI)和我当地的MacBook pro上运行得非常好。
我建议您尝试将此文件作为一个已知良好的配置运行,并检查“docker logs -f nifi&#39;为了上述内容,看看您的环境是否在启动时抛出错误。

NIFI_WEB_HTTP_HOST和NIFI_WEB_HTTP_PORT的环境变量适用于在8080以外的端口上访问Docker nifi时,因此您无法获得主机标头阻止程序。我最近对这个项目进行了修改,所以如果你遇到问题,我想知道,所以我可以解决它。

答案 2 :(得分:0)

我遇到了同样的问题,我无法远程访问Web ui。原来是防火墙问题。禁用firewalld并添加自定义防火墙规则以允许带有端口的docker网络可以解决此问题。

这是我的docker-compose.yml