Apache mod_proxy não fecha soquetes de back-end rápido o suficiente

Apache mod_proxy não fecha soquetes de back-end rápido o suficiente

Estou usando o Apache + mod_proxy para fornecer um aplicativo de bate-papo com o Ejabberd. Está usando Bosh (XMPP sobre HTTP).

O problema é que quando um usuário fecha o navegador, o Apache mantém a conexão aberta com o servidor back-end por um tempo (cerca de 1 minuto).

Isso me irrita porque o Ejabberd só consegue perceber que o usuário saiu quando o soquete está fechado... então o interlocutor do usuário não sabe o que está acontecendo durante esse tempo + o tempo limite do próprio Ejabberd. Posso alterar o tempo limite do Ejabberd, mas não consegui descobrir como reduzir o tempo de fechamento no lado do Apache.


Veja a saída do netstatantes do navegador ser fechado:

Navegador -> Apache mod_proxy

tcp        0      0 127.0.1.1:80            127.0.0.1:52361         TIME_WAIT
tcp        0      0 127.0.1.1:80            127.0.0.1:52380         ESTABLISHED
tcp        0      0 127.0.0.1:52380         127.0.1.1:80            ESTABLISHED

Apache mod_proxy -> Ejabberd

tcp        0      0 0.0.0.0:5280            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:5280          127.0.0.1:40972         ESTABLISHED
tcp        0      0 127.0.0.1:40953         127.0.0.1:5280          TIME_WAIT
tcp        0      0 127.0.0.1:40972         127.0.0.1:5280          ESTABLISHED

Edepois que o navegador for fechado, durante dezenas de segundos a cerca de 1 minuto...

Navegador -> Apache mod_proxy

tcp        0      0 127.0.1.1:80            127.0.0.1:52361         TIME_WAIT
tcp        1      0 127.0.1.1:80            127.0.0.1:52380         CLOSE_WAIT
tcp        0      0 127.0.0.1:52380         127.0.1.1:80            FIN_WAIT2

Apache mod_proxy -> Ejabberd

tcp        0      0 0.0.0.0:5280            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:5280          127.0.0.1:40972         ESTABLISHED
tcp        0      0 127.0.0.1:40953         127.0.0.1:5280          TIME_WAIT
tcp        0      0 127.0.0.1:40972         127.0.0.1:5280          ESTABLISHED

Minha configuração do Apache:

<VirtualHost *:80>
    ProxyRequests On
    ProxyPass /http-bind/ http://localhost:5280/http-bind/

    ServerName desktop
    <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>

    RewriteEngine Off

    [...]
</VirtualHost>

informação relacionada