对于我的生活,我无法进入NiFi Web UI。这让我讨厌安全。
TLDR;我找不到在Docker容器中启动NiFi并仍然访问UI的正确方法。这是我尝试过的(8小时):
docker run --name nifi \
-p 8080:8080 \
-d \
apache/nifi:latest
我去localhost:8080/nifi
- 超时。同样在127.0.0.1
。
qazxsw poi - IP网关是qazxsw poi,实际IP为qazxsw poi。分别是docker inspect nifi
和超时。
开始随机尝试的东西:
172.20.0.1
我还为我可能减少的筹码建立了一个完整的172.0.0.2
。一切都有效,除了:
Invalid Host Header
没有变化。你能帮助我吗?
更新1
我使用了以下评论中链接的repo的# 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
文件;谢谢@Chaffelson。仍在处理docker-compose.yml
的超时。所以我用码头机器旋转了一滴。
服务开始正常,日志表明Jetty服务器适用于NiFi Registry和NiFi。我可以在我的本地机器上访问NiFi注册表@ nifi:
image: apache/nifi:latest
hostname: nifi
depends_on:
- zookeeper
- broker
- schema_registry
- nifi-registry
ports:
- "8080:8080"
。
我无法访问docker-compose.yml
- 我得到localhost
回复。
所以我加入了<host ip>:18080/nifi-registry
:
<host ip>8080/nifi
Jetty服务器无法启动。洞察?
更新2
从日志中,只使用invalid host header
:
docker-compose.yml
,其中environment:
# Tried both with and without quotes
NIFI_WEB_HTTP_HOST: "<host-ip>"
是主机ip。
这是我的问题的关键。
更新3
我在我的本地机器上禁用了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]
访问nifi。实际访问远程主机没有任何进展(这是所有这一切的重点)。
很抱歉听到您遇到此问题。在Apache NiFi 1.5.0中,启用了更严格的主机头保护,以防止主机头中毒攻击。不幸的是,我们已经看到,对于不熟悉配置的用户来说,这没有充分记录。作为回应,我们已经对45.55.36.15
进行了更改,并将包含在即将发布的1.6.0版本中:
ufw
被添加到localhost:8080
,它接受逗号分隔的有效主机头列表,独立于Jetty主机名master
允许来自run命令的代理白名单要立即修复,此命令应该起作用:
nifi.web.proxy.host
您还可以使用Chrome扩展程序(如nifi.properties
)拦截请求,以覆盖Docker configuration has been updated标头,并验证它是否与预期主机匹配时有效。除了Daniel的出色添加之外,这应该会帮助您,直到下一个版本发布。
我使用docker run --name nifi \
-p 8080:8080 \
-e NIFI_WEB_HTTP_HOST=172.20.0.1
-d \
apache/nifi:latest
和类似的docker compose文件进行自动化的NiFi Python客户端测试。它看起来与你的表面相似,并且在我自己的Ubuntu(Travis-CI)和我当地的MacBook Pro上运行得非常好。
我建议您尝试将此文件作为已知良好的配置运行,并检查上面的“docker logs -f nifi”以查看您的环境是否在启动时抛出错误。
NIFI_WEB_HTTP_HOST和NIFI_WEB_HTTP_PORT的环境变量适用于在8080以外的端口上访问Docker nifi时,因此您无法获得主机标头阻止程序。我最近对这个项目进行了修改,所以如果你遇到问题,我想知道,所以我可以解决它。