mod_rewrite+proxy 关闭与后端的连接(keepalive)

ada*_*amw 3 mod-rewrite mod-proxy keepalive apache-2.2

我们有一个相当典型的设置:客户端 <-> apache2 (2.2.22) <-> 后端 (*)。

最初,我们以最简单的形式使用 mod_rewrite 和 [P] 标志:

<VirtualHost *:80>
  RewriteEngine On
  ProxyPreserveHost On
  RewriteRule ^(.*)$ http://localhost:8081$1 [P,L]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

然而,使用此设置,即使客户端使用保持活动连接并使用一个 tcp 连接向 apache 发送多个 http 请求,apache 也会创建一个到后端的新 tcp 连接以获取请求。

我决定尝试直接使用 mod_proxy:

ProxyPreserveHost On
ProxyPass / http://localhost:8081/
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,现在 apache 和后端之间的 tcp 连接被重新使用(这是我最初的目标)。

这是为什么?mod_rewrite 中是否有某些内容可以配置以启用 keepalive 后端连接?

(*) 后端实际上是 haproxy <-> 多个应用程序服务器,但我认为这在这里并不重要。

Ans*_*ers 5

mod_proxy进行连接池。mod_rewrite没有。