読者です 読者をやめる 読者になる 読者になる

うまいぼうぶろぐ

linuxとhttpdとperlのメモ

apache 2.2.12以降で ProxyPassReverse が balancer:// でも使えるようになってた

ProxyPassのパラメータ検討してて、色々見てたら表記の記述を発見。

*) mod_proxy: Complete ProxyPassReverse to handle balancer URL's. Given;
BalancerMember balancer://alias http://example.com/foo
ProxyPassReverse /bash balancer://alias/bar
backend url http://example.com/foo/bar/that is now translated /bash/that [William Rowe]

see also.

例えばこういう設定があるときに

<Proxy balancer://cluster >
  BalancerMember http://backend1.example.com/foo
  BalancerMember http://backend2.example.com/foo
</Proxy>

ProxyPass            /bar balancer://cluster/foo

apache 2.2.12以前だと、それぞれのBalancerMemberの分だけProxyPassReverseを書く必要があった。

ProxyPassReverse  /bar http://backend1.example.com/foo
ProxyPassReverse  /bar http://backend2.example.com/foo

これがapache 2.2.12以降だと

ProxyPassReverse  /bar balancer://cluster/foo

だけで良くなるらしい!!すっきりしてわかりやすくて良いですね。

追記

さっそく実際にやってみたんですが、BalancerMemberがhttpの場合は ProxyPassReverse balancer:// でもうまくいきましたが、BalancerMemberがajpの場合はダメだった。プロトコルによるレスポンスヘッダの違いのせい?