notebook

都内でWEB系エンジニアやってます。

mod_rewriteでReverseProxy

mod_rewriteでReverseProxy

  • reverse proxy apacheのworkerでバランサ、backendにサーバが何台かある状態でサブドメインによって振り分け先を変えたいという用件がありました。

ググると最初はVirtualHostでやるみたいなのが一般的みたいだったので僕も乗っかろうと思っていましたが色々面倒な事に

まずmod_rewriteの設定や共通な設定もVirtualHostごとに書かなくてはいけない点

今回切り分けたいのは振り分け先のサーバだけでしたがそのほかの設定もVirtualHostのなかに書かなくてはいけないような挙動がありました

VirtualHostごとに違う設定だけ活かしたいって事をしたかったのですが...

で、結局mod_rewriteで解決しました。

RewriteCond %{HTTP_HOST} subdomain.testhost.jp
RewriteRule ^/(.*)$ balancer://cluster/$1 [P,L]
ProxyPassReverse / balancer://cluster/

<Proxy balancer://cluster>
  BalancerMember http://192.168.10.1:80
  BalancerMember http://192.168.10.2:80
  BalancerMember http://192.168.10.3:80
</Proxy>

こんな感じでドメイン名をマッチさせて転送先にclusterを指定してあげればOK その際にP(roxy)オプションを付けてあげます

clusterの台数を増やす事も可能なのでサブドメイン単位で役割を分けたりすることが出来るようになりました

勉強になりました。