httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Extra Fu <extr...@gmail.com>
Subject [users@httpd] mod_proxy - terminating backend connections
Date Fri, 19 Jun 2015 14:00:46 GMT
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,

Mime
View raw message