You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Extra Fu <ex...@gmail.com> on 2015/06/19 16:00:46 UTC

[users@httpd] mod_proxy - terminating backend connections

Hello,

I'm facing an interesting issue with mod_proxy on Apache 2.2.22 (Ubuntu
Precise, x86_64).

I have a backend application running on port 20 000. HTTP clients can keep
connection open for many minutes, up to one hour. If the backend detects a
change, it'll push it over HTTP on the established connection.

So we have:

HTTPS client -> web server/mod_proxy -> backend application running on
localhost:20000

The problem is that when the HTTPS client terminates its connection,
mod_proxy does not terminate the connection with the backend application.
So if the backend application detects a change, it might try to push it to
a terminated connection, but won't be aware of that. For testing purposes,
if I restart Apache once the HTTPS connection is terminated by the client,
the connection between mod_proxy and the backend application is of course
terminated too and the backend application notices that the socket has been
closed and can handle it - ie., not try to push its change and more
importantly, know the response wasn't delivered properly.

I use the following configuration:

ProxyRequests Off
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
SetEnv proxy-initial-not-pooled 1
ProxyPreserveHost On
ProxyPass /backendapp http://127.0.0.1:20000/backend/app disablereuse=On
retry=0 connectiontimeout=5 timeout=3600

I've also done some test with smax=0, disablereuse, flushpackets, etc. with
no luck.

So, my question is simple. How can we make mod_proxy terminate the
connection with the backend immediately when the client terminates its own?

Thanks,