Como configurar um proxy de encaminhamento do Apache com conexões persistentes?

1

Temos um proxy de encaminhamento do Apache enviando solicitações para milhares de servidores de back-end.

Os servidores estão com defeito, pois exigem a solicitação de solicitação inicial (sem autenticação) e a próxima solicitação (com autenticação) na mesma conexão http. Não podemos consertar isso em qualquer escala de tempo razoável.

Então, gostaríamos que o proxy de encaminhamento usasse a mesma conexão, possivelmente via pool de conexão?

Os proxies de encaminhamento do Apache, por padrão, fecham a conexão assim que recebem uma resposta. Isso ocorre por design

“The default worker for forward proxying does not use connection pooling in the naive sense. It closes each connection after each request.

What Ryujiro Shibuya was observing was that Apache signals it would keep the connection open even in forward proxy mode, but then acually closes the connection. We are discussing a fix to this, namely always signalling "Connection: close" from the beginning for the default forward and revere proxy workers. “

Há alguma sugestão que pode ser trabalhada:

"You can define explicit workers though (e.g. using ProxyPass for reverse and as Rüdiger wrote likely also in forward proxy mode, which then will use HTTP Keep-Alive (by default, depending on several config options)"

Mas eu não sei como fazer isso. Algo com ProxySet, possivelmente? O problema com isso é que preciso especificar de alguma forma as URLs, mas isso é um proxy de encaminhamento - há muitos possíveis servidores de origem e não posso enumerá-los antecipadamente.

Como devemos configurar as coisas para reutilizar essa conexão?

    
por The Archetypal Paul 27.11.2015 / 13:32

1 resposta

1

(isso deve ser um comentário, mas é um pouco longo)

We have a Apache forward proxy sending requests to thousands of back end servers.

E você acabou de perceber que não está funcionando?

Se você consegue lidar com o tráfego de "milhares de servidores" em uma única instância do Apache, ele sugere algo errado com sua arquitetura.

Você não pode confiar em todos os componentes da cadeia (ou seja, não apenas em seu proxy), implementando keep-alive na forma como os servidores de back-end parecem estar esperando. Então, o que você está tentando aqui é, na melhor das hipóteses, mitigar um problema.

Recomendamos enfaticamente que você corrija a causa raiz aqui.

So we would like the forward proxy to use the same connection, possibly via connection pooling?

Não. O pool de conexões mantém um conjunto de conexões abertas para o servidor de origem. Não vincula a conexão do lado do cliente com a conexão do servidor de origem.

Sem saber muito mais sobre o que está acontecendo no servidor proxy, é difícil indicar qual é a abordagem correta para essa solução alternativa; enquanto o Apache faz um servidor fabuloso, IMHO, existem melhores ferramentas para usar como proxies (ATS, haproxy, libra, squid, nginx, verniz.

Do meu conhecimento do Apache httpd, não acho que é possível fazer o que você está tentando alcançar.

    
por 27.11.2015 / 14:05