如何通过安全连接在整个 nginx 中运行 NiFi

问题描述 投票:0回答:1

我有 NiFi,通过 Keycloak 进行 OpenId 身份验证。一切都很好。但又出现了一个额外的任务:通过 Nginx 访问 NiFi。我根据 NiFi 文档配置了所有内容,但我不断收到错误:(

配置nginx:

    location /nifi {
        proxy_set_header X-ProxyScheme "https";
        proxy_set_header X-ProxyHost "proxy-host";
        proxy_set_header X-ProxyPort "443";
        proxy_set_header X-ProxyContextPath "/nifi";
        proxy_pass https://nifi-host.com:8443;
    }

nifi.属性

nifi.web.proxy.context.path=/
nifi.web.proxy.host=proxy-host:443

在第一次请求时,

https://proxy-host:443/nifi
诚实地工作并前往
https://nifi-host.com:8443/nifi/
。以下重定向应该导致页面
https://nifi-host.com:8443/nifi-api/oauth2/authorization/consumer
接收令牌,但重定向到
https://proxy-host:443/nifi/nifi-api/oauth2/authorization
并且浏览器抱怨它显示
404 not found
- 这是可以理解的,因为
keycloak
主机上没有
nginx
。如何强制
nginx
进一步用 NiFi 替换目标主机的 URL,而不是代理主机的 URL,以便接收令牌并进一步与 NiFi 库通信?

预先感谢您的任何想法!

nginx bigdata apache-nifi
1个回答
0
投票

我发现问题是代理和nifi之间的证书。我从 jks 导出证书并添加到 nginx 上的代理证书。这是 NGINX 上的设置:

server {
        listen 443 ssl;
        http2 on;
        server_name  nifi.proxy.vn;
        ssl_certificate     /etc/nginx/certs/tls.crt;
        ssl_certificate_key /etc/nginx/certs/tls.key;
        ssl_client_certificate /etc/nginx/certs/nifi-cert.pem;
        #ssl_verify_client off;
        proxy_ssl_certificate /etc/nginx/certs/nifi-tls.crt;
        proxy_ssl_certificate_key /etc/nginx/certs/nifi-tls.key;
        proxy_ssl_trusted_certificate /etc/nginx/certs/nifi-cert.pem;
        location / {
            proxy_pass       https://xxxxx:9443;
            proxy_set_header X-ProxyScheme https;
            proxy_set_header X-ProxyHost nifi.proxy.vn;
            proxy_set_header X-ProxyPort 443;
            proxy_set_header X-ProxiedEntitiesChain "$ssl_client_s_dn";
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.