Conexões de proxy reverso do Apache2 permanecem persistentes, preenchendo canais ssh

1

Eu tenho um servidor web (instância do Amazon Linux EC2 executando o Apache2), vamos chamá-lo de "servidor A", no qual configurei o proxy reverso usando:

# (All the appropriate modules are loaded higher up in the conf file)
# ...
ProxyRequests off
ProxyPass /booth5/ http://localhost:8005/
ProxyHTMLURLMap http://localhost:8005 /booth5

<location /booth5/>
ProxyPassReverse /
SetOutputFilter  proxy-html
ProxyHTMLURLMap  /        /booth5/
ProxyHTMLURLMap  /booth5  /booth5
RequestHeader    unset  Accept-Encoding
</location>

Em que localhost:8005 é uma porta encaminhada através de uma conexão ssh com um servidor localizado atrás de um firewall.

Essa configuração funciona bem e é executada por um tempo, mas depois de algum tempo o servidor A não envia novas solicitações para o servidor proxy.

As conexões do servidor com o servidor proxy estão permanecendo:

# netstat -napt | grep 8005
tcp        0      0 127.0.0.1:8005              0.0.0.0:*                   LISTEN      22675/sshd          
tcp        1      0 127.0.0.1:38860             127.0.0.1:8005              CLOSE_WAIT      28910/httpd         
tcp        1      0 127.0.0.1:39453             127.0.0.1:8005              CLOSE_WAIT  28548/httpd         
tcp        1      0 127.0.0.1:44596             127.0.0.1:8005              CLOSE_WAIT  28542/httpd         
tcp        1      0 127.0.0.1:38774             127.0.0.1:8005              CLOSE_WAIT  28549/httpd         
tcp        1      0 127.0.0.1:39997             127.0.0.1:8005              CLOSE_WAIT  29889/httpd         
tcp        1      0 127.0.0.1:39135             127.0.0.1:8005              CLOSE_WAIT  28544/httpd         
tcp        0      0 ::1:8005                    :::*                        LISTEN      22675/sshd  

Acredito que isso esteja "esgotando" todos os canais no túnel ssh e quero que o servidor A se comporte de forma a enviar solicitações http para o servidor proxy, conforme necessário, mas depois limpa as conexões.

Inicialmente, suspeitei que isso se devesse ao Apache no servidor proxy, fazendo conexões persistentes, então atualizei a configuração para incluir:

    # Timeout: The number of seconds before receives and sends time out.
    # Timeout 300
    Timeout 30

    # KeepAlive: Whether or not to allow persistent connections (more than
    # one request per connection). Set to "Off" to deactivate.
    KeepAlive On

    # MaxKeepAliveRequests: The maximum number of requests to allow
    # during a persistent connection. Set to 0 to allow an unlimited amount.
    # We recommend you leave this number high, for maximum performance.
    #MaxKeepAliveRequests 100
    MaxKeepAliveRequests 6

    # KeepAliveTimeout: Number of seconds to wait for the next request from the
    # same client on the same connection.
    KeepAliveTimeout 5

Ainda não tentei definir KeepAlive Off . Eu estava tentando obter algum benefício de conexões curtas / persistentes, mas elas não estão fechando.

A configuração do Apache é o local correto para resolver isso? Em vez disso, é parte da configuração do ssh para o túnel? (config para que pode ser fornecido, se necessário).

    
por woolfie 11.04.2014 / 22:14

1 resposta

0

Infelizmente, parece que esse é um bug conhecido do Apache e do código mod_proxy: link

Eu mudei para uma solução alternativa agora.

    
por 12.04.2014 / 06:30