[
https://issues.apache.org/jira/browse/NIFI-14462?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17944647#comment-17944647
]
Fabian Reiber commented on NIFI-14462:
--------------------------------------
That's true. But it is not clear, why a \{{ttl}} between 30 and 60 is not
working while the idle timeout is set to 60.
> Regular getting HTTP 502 Error behind Apache Reverse Proxy
> ----------------------------------------------------------
>
> Key: NIFI-14462
> URL: https://issues.apache.org/jira/browse/NIFI-14462
> Project: Apache NiFi
> Issue Type: Bug
> Components: Core UI
> Affects Versions: 2.3.0
> Environment: Debian 11/12
> Podman 5.3.0/5.4.2
> Apache2: 2.4.62
> Reporter: Fabian Reiber
> Priority: Major
>
> We are using nifi in a secured cluster witch three nodes behind an apache
> reverse proxy. After the update from 1.28.1 to 2.3.0, we regularly get 502
> proxy errors like this in the browser:
> {code:none}
> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>502
> Proxy Error</title> </head><body> <h1>Proxy Error</h1> <p>The proxy server
> received an invalid response from an upstream server.<br /> The proxy server
> could not handle the request<p>Reason: <strong>Error reading from remote
> server</strong></p></p> <hr> <address>Apache/2.4.62 (Debian) Server at
> nifi.local.example.com Port 443</address> </body></html> {code}
> This did not happen with nifi 1. Nifi fetches various api endpoints while
> running. And each of the endpoint can throw this error. Most of the time the
> requests are ok and nifi runs as expected. But sometimes not. Here is an
> example of the apache error log, after we raise the log level to trace5:
> {code:none}
> [Thu Apr 10 14:58:01.694121 2025] [proxy:trace2] [pid 14770:tid 14793]
> mod_proxy.c(848): [client 192.168.58.1:38278] AH03461: attempting to match
> URI path '/nifi-api/flow/status' against prefix '/' for proxying, referer:
> https://nifi.local.example.com/nifi/
> [Thu Apr 10 14:58:01.694125 2025] [proxy:debug] [pid 14770:tid 14784]
> mod_proxy.c(1465): [client 192.168.58.1:38262] AH01143: Running scheme https
> handler (attempt 0), referer: https://nifi.local.example.com/nifi/
> [Thu Apr 10 14:58:01.694139 2025] [proxy:trace1] [pid 14770:tid 14793]
> mod_proxy.c(969): [client 192.168.58.1:38278] AH03464: URI path
> '/nifi-api/flow/status' matches proxy handler
> 'proxy:https://nifi.local.example.com:8443/nifi-api/flow/status', referer:
> https://nifi.local.example.com/nifi/
> [Thu Apr 10 14:58:01.694143 2025] [proxy:debug] [pid 14770:tid 14784]
> proxy_util.c(2797): AH00942: https: has acquired connection for
> (nifi.local.example.com:8443)
> [Thu Apr 10 14:58:01.694149 2025] [proxy:debug] [pid 14770:tid 14784]
> proxy_util.c(3242): [client 192.168.58.1:38262] AH00944: connecting
> https://nifi.local.example.com:8443/nifi-api/flow/process-groups/1fb57701-0196-1000-705b-739fe62c8f28?uiOnly=true
> to nifi.local.example.com:8443, referer: https://nifi.local.example.com/nifi/
> [Thu Apr 10 14:58:01.694161 2025] [proxy:debug] [pid 14770:tid 14784]
> proxy_util.c(3450): [client 192.168.58.1:38262] AH00947: connecting
> /nifi-api/flow/process-groups/1fb57701-0196-1000-705b-739fe62c8f28?uiOnly=true
> to 127.0.0.1:8443 (nifi.local.example.com:8443), referer:
> https://nifi.local.example.com/nifi/
> [Thu Apr 10 14:58:01.694187 2025] [proxy:trace2] [pid 14770:tid 14784]
> proxy_util.c(3734): https: reusing backend connection
> 127.0.0.1:42282<>127.0.0.1:8443
> [Thu Apr 10 14:58:01.694279 2025] [proxy:trace2] [pid 14770:tid 14793]
> proxy_util.c(2604): [client 192.168.58.1:38278] https: found worker
> https://nifi.local.example.com:8443/ for
> https://nifi.local.example.com:8443/nifi-api/flow/status, referer:
> https://nifi.local.example.com/nifi/
> [Thu Apr 10 14:58:01.694300 2025] [proxy:debug] [pid 14770:tid 14793]
> mod_proxy.c(1465): [client 192.168.58.1:38278] AH01143: Running scheme https
> handler (attempt 0), referer: https://nifi.local.example.com/nifi/
> [Thu Apr 10 14:58:01.694328 2025] [proxy:debug] [pid 14770:tid 14793]
> proxy_util.c(2797): AH00942: https: has acquired connection for
> (nifi.local.example.com:8443)
> [Thu Apr 10 14:58:01.694334 2025] [proxy:debug] [pid 14770:tid 14793]
> proxy_util.c(3242): [client 192.168.58.1:38278] AH00944: connecting
> https://nifi.local.example.com:8443/nifi-api/flow/status to
> nifi.local.example.com:8443, referer: https://nifi.local.example.com/nifi/
> [Thu Apr 10 14:58:01.694340 2025] [proxy:debug] [pid 14770:tid 14793]
> proxy_util.c(3450): [client 192.168.58.1:38278] AH00947: connecting
> /nifi-api/flow/status to 127.0.0.1:8443 (nifi.local.example.com:8443),
> referer: https://nifi.local.example.com/nifi/
> [Thu Apr 10 14:58:01.694745 2025] [proxy:trace2] [pid 14770:tid 14793]
> proxy_util.c(3734): https: reusing backend connection
> 127.0.0.1:42272<>127.0.0.1:8443
> [Thu Apr 10 14:58:01.694887 2025] [proxy_http:error] [pid 14770:tid 14793]
> (70014)End of file found: [client 192.168.58.1:38278] AH01102: error reading
> status line from remote server nifi.local.example.com:8443, referer:
> https://nifi.local.example.com/nifi/
> [Thu Apr 10 14:58:01.694905 2025] [proxy:error] [pid 14770:tid 14793] [client
> 192.168.58.1:38278] AH00898: Error reading from remote server returned by
> /nifi-api/flow/status, referer: https://nifi.local.example.com/nifi/{code}
> Actually the last two lines are the most interesting, but don't give much
> information.
> We can reproduce this behavior on two different clusters on different virtual
> machines with different debian and podman versions as well as with a secured
> single node instance from scratch. We are using podman to run nifi in a
> container/pod. We have our own certificate authority to configure the proxy
> with certificates. But I think this is not important in this case. So, the
> location directive of the apache config of the single node instance, which is
> more interesting I guess, looks like this:
> {code:none}
> <Location "/">
> ProxyPass https://nifi.local.example.com:8443/
> ProxyPassReverse https://nifi.local.example.com:8443/
> RequestHeader add X-ProxyScheme "https"
> RequestHeader add X-ProxyHost "nifi.local.example.com"
> RequestHeader add X-ProxyPort "443"
> RequestHeader add X-ProxyContextPath "/"
> </Location>{code}
> This part does not differ a lot to the config of the webserver in our cluster.
> But at least we found two workarounds. If we set "SetEnv
> proxy-initial-not-pooled 1" in the location directive of the apache config,
> we do not get any proxy error again and nifi works as expected. Another
> second possibility is by setting "disablereuse=On" in the "ProxyPass"
> directive.
> The documentation of mod_proxy says about that variable:
> ??This avoids the "proxy: error reading status line from remote server" error
> message caused by the race condition that the backend server closed the
> pooled connection after the connection check by the proxy and before data
> sent by the proxy reached the backend.??
> So, if no pooled connection is reused or not any connection at all is reused
> (with "disablereuse=On"), nifi does not close the connection to early to the
> proxy.
> For more information take a look at the apache documentation for [mod_proxy
> Environmental
> variables|https://httpd.apache.org/docs/2.4/mod/mod_proxy_http.html#env] and
> [ProxyPass|https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#ProxyPass]
> If you need more information please let me know :)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)