mod_rewrite + proxy fecha conexões para backend (keepalive)

1

Temos uma configuração bastante típica: cliente < - > apache2 (2.2.22) < - > backend (*).

Inicialmente, estávamos usando mod_rewrite com a sinalização [P] na forma mais simples:

<VirtualHost *:80>
  RewriteEngine On
  ProxyPreserveHost On
  RewriteRule ^(.*)$ http://localhost:8081$1 [P,L]
</VirtualHost>
No entanto, usando essa configuração, mesmo quando os clientes usavam conexões keep-alive e estavam enviando várias solicitações http usando uma conexão tcp para o apache, o apache criava uma nova conexão tcp para o back-end para solicitação de alcance.

Eu decidi usar o mod_proxy diretamente:

ProxyPreserveHost On
ProxyPass / http://localhost:8081/

E, para minha surpresa, as conexões tcp entre o apache e o back-end são reutilizadas (que era meu objetivo inicial).

Por que isso? Existe algo no mod_rewrite para configurar para ativar as conexões de back-end do keepalive?

(*) O backend é, na verdade, haproxy < - > vários servidores de aplicativos, mas não acho que isso importe aqui.

    
por adamw 03.09.2012 / 12:19

3 respostas

3

mod_proxy faz pool de conexão. mod_rewrite não.

    
por 03.09.2012 / 13:33
0

O uso de um par de diretivas ProxyPass fictícias, conforme descrito no link , permite o uso do pool de conexões com um RewriteRule.

    
por 09.05.2014 / 11:55
0

Você pode usar o http keep alive mesmo se você fizer o proxy reverso via reescrita, você só precisa definir keepalive to On via a diretiva ProxySet desta forma:

<Proxy "http://backend">
    ProxySet keepalive=On
</Proxy>

Fonte: link

    
por 02.10.2018 / 00:26