mod_proxy
faz pool de conexão. mod_rewrite
não.
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.
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.
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