Apache-2.2
mod_rewrite+proxy 關閉到後端的連接(keepalive)
我們有一個相當典型的設置:客戶端 <-> apache2 (2.2.22) <-> 後端 (*)。
最初我們使用 mod_rewrite 和
$$ P $$最簡單形式的標誌:
<VirtualHost *:80> RewriteEngine On ProxyPreserveHost On RewriteRule ^(.*)$ http://localhost:8081$1 [P,L] </VirtualHost>
然而,使用這種設置,即使客戶端使用保持活動連接並使用一個 tcp 連接向 apache 發送多個 http 請求,apache 也會為到達請求創建一個到後端的新 tcp 連接。
我決定嘗試直接使用 mod_proxy:
ProxyPreserveHost On ProxyPass / http://localhost:8081/
令我驚訝的是,現在 apache 和後端之間的 tcp 連接被重新使用(這是我最初的目標)。
這是為什麼?mod_rewrite 中有什麼東西可以配置來啟用keepalive後端連接嗎?
(*) 後端實際上是 haproxy <-> 多個應用伺服器,但我認為這並不重要。
mod_proxy
做連接池。mod_rewrite
沒有。
即使您通過重寫進行反向代理,您也可以使用 http keep alive,您只需要通過如下指令設置
keepalive
為:On``ProxySet
<Proxy "http://backend"> ProxySet keepalive=On </Proxy>
來源:https ://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxyset