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
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,