我正在尝试使用nginx作为反向代理来连接到nifi。 我正在使用以下流程: 本地计算机-> http-> NGINX-> https->安全NiFi
以下是我的nifi.properties配置:
nifi.web.https.host=localhost
nifi.web.https.port=8443
nifi.web.https.network.interface.default=
nifi.web.jetty.working.directory=./work/jetty
nifi.web.jetty.threads=200
nifi.web.max.header.size=16 KB
nifi.web.proxy.context.path=/nifi/
nifi.web.proxy.host=localhost:8443
nifi.remote.input.host=localhost
nifi.remote.input.secure=true
以下是我的nginx配置:
server {
listen 81;
server_name localhost;
location /nifi/ {
proxy_ssl_certificate C:/nifi-toolkit-1.7.1/target/nifi-cert.pem;
proxy_ssl_certificate_key C:/nifi-toolkit-1.7.1/target/nifi-key.key;
proxy_ssl_server_name on;
proxy_pass https://localhost:8443;
proxy_set_header X-ProxyScheme "https";
proxy_set_header X-ProxyHost $http_host;
proxy_set_header X-ProxyPort 8443;
proxy_set_header X-ProxyContextPath "";
root html;
index index.html index.htm;
}
location /nifi-api/{
proxy_ssl_certificate C:/nifi-toolkit-1.7.1/target/nifi-cert.pem;
proxy_ssl_certificate_key C:/nifi-toolkit-1.7.1/target/nifi-key.key;
proxy_ssl_server_name on;
proxy_set_header X-ProxyScheme "https";
proxy_set_header X-ProxyHost $http_host;
proxy_set_header X-ProxyPort 443;
proxy_set_header X-ProxyContextPath "";
proxy_pass https://localhost:8443/nifi-api/;
}
}
当我尝试通过nginx访问nifi时,我在error.logs中得到以下错误:
2018/09/25 15:41:55 [error] 100964#77892: *27 upstream timed out (10060: A `connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "POST /nifi-api/access/oidc/exchange HTTP/1.1", upstream: "https://[::1]:8443/nifi-api/access/oidc/exchange", host: "localhost:81", referrer: "http://localhost:81/nifi/"`
以下是当我点击url时在浏览器中出现的错误:http://localhost:81/nifi/
是否缺少任何配置设置。任何帮助将不胜感激。
谢谢。
答案 0 :(得分:0)
问题是nifi.web.proxy.context.path设置不正确。
检查文档:
NiFi将仅接受带有X-ProxyContextPath或 X-Forwarded-Context标头,如果该值已列入白名单 nifi.properties中的nifi.web.proxy.context.path属性。这个性质 接受用逗号分隔的期望值列表。万一 传入请求具有X-ProxyContextPath或X-Forwarded-Context 白名单中没有的标头值 出现错误”页面,并显示错误信息 nifi-app.log。
答案 1 :(得分:0)
正如echo所指出的那样,您的X-ProxyContextPath应该与您的位置相同,并且与nifi.properties中的nifi.web.proxy.context.path =相同。
在尝试将SSL引入混合之前,我希望通过简单的HTTP身份验证使事情运行。
客户端> http请求> NGINX反向代理> http请求> NIFI
在这种情况下,您的NIFI配置文件“ nifi.properties”应如下所示:
nifi.web.https.host=
nifi.web.https.port=
nifi.web.proxy.context.path=/
nifi.web.proxy.host=localhost:80
nifi.remote.input.host=localhost
nifi.remote.input.secure=false
重新启动NIFI。
请注意,上下文路径仅为/,所以这就是根目录下的所有内容。
对于NGINX
server {
listen 80;
server_name localhost;
location / {
proxy_pass https://YOUR_NIFI_INSTANCE:8080;
proxy_set_header X-ProxyScheme "http";
proxy_set_header X-ProxyHost localhost;
proxy_set_header X-ProxyPort 80;
proxy_set_header X-ProxyContextPath "/";
}
}
使用您的NIFI框的网址更新YOUR_NIFI_INSTANCE。