使用 nginx 代理 nifi

使用 nginx 代理 nifi

我想使用 https nginx 来代理在同一台机器中运行的非安全 nifi 服务器。

到目前为止,我最接近的方法是使用这种配置:

location ^~ /nifi {
            proxy_set_header X-ProxyHost localhost;
            proxy_set_header X-ProxyPort 6969;
            proxy_set_header X-ProxyContextPath /nifi;

            proxy_pass http://localhost:6969/nifi;
    }

在 nifi 中我遇到异常:

2018-11-24 17:40:19,473 ERROR [NiFi Web Server-20] o.a.nifi.web.api.config.ThrowableMapper An unexpected error has occurred:
javax.ws.rs.core.UriBuilderException: The provided context path [/nifi] was not whitelisted []. Returning Internal Server Error response.
javax.ws.rs.core.UriBuilderException: The provided context path [/nifi] was not whitelisted []
        at org.apache.nifi.web.util.WebUtils.verifyContextPath(WebUtils.java:152)
        at org.apache.nifi.web.util.WebUtils.getResourcePath(WebUtils.java:125)
        at org.apache.nifi.web.api.ApplicationResource.buildResourceUri(ApplicationResource.java:159)
        at org.apache.nifi.web.api.ApplicationResource.generateResourceUri(ApplicationResource.java:141)
        at org.apache.nifi.web.api.ProcessorResource.populateRemainingProcessorEntityContent(ProcessorResource.java:107)
        at org.apache.nifi.web.api.ProcessorResource.populateRemainingProcessorEntitiesContent(ProcessorResource.java:95)
        at org.apache.nifi.web.api.FlowResource.populateRemainingFlowStructure(FlowResource.java:200)
        at org.apache.nifi.web.api.FlowResource.populateRemainingFlowContent(FlowResource.java:187)
        at org.apache.nifi.web.api.FlowResource.getFlow(FlowResource.java:373)

有什么提示吗?

答案1

只需更新您的proxy_pass即可删除nifi后缀。


location ^~ /nifi {

    proxy_set_header X-ProxyHost localhost;
    proxy_set_header X-ProxyPort 6969;
    proxy_set_header X-ProxyContextPath /nifi;

    proxy_pass http://localhost:6969;

}

nginx 会将整个内容附加$uriproxy_passURL 中,因此 nginx 会转发到http://本地主机:6969/nifi/nifi/... 代替http://本地主机:6969/nifi/...

答案2

答案补充多于,尝试添加X-ProxyScheme标题。

此外,如果您正在宣传您的网站以供外部访问,请将 修改X-ProxyHost为您的 LAN 可访问 IP 地址或 Internet 可访问域名。(mynifiwebaccess.com10.51.102.9

location ^~ /nifi {

    proxy_set_header X-ProxyScheme https;
    proxy_set_header X-ProxyHost mynifiwebaccess.com;
    proxy_set_header X-ProxyPort <externally_advertised_port_number>;
    proxy_set_header X-ProxyContextPath /nifi;

    proxy_pass http://localhost:6969;

}

我不确定您的配置,但您可以尝试使externally_advertised_port上面代码的端口号有所不同,因为 NiFi 可能正在运行并使用端口6969

答案3

错误消息:javax.ws.rs.core.UriBuilderException:提供的上下文路径[/nifi]未列入白名单[]。

这是由于 nifi.web.proxy.context.path 设置不正确造成的。

检查文档:

https://docs.hortonworks.com/HDPDocuments/HDF3/HDF-3.3.0/nifi-configuration-best-practices/content/proxy_configuration.html

相关内容