mod_proxy_expressを試す

mod_proxy_expressってのはApache2.4で追加された新しいモジュール。proxyの宛先を動的に変更、つまり再起動しなくても変更できる仕組みらしいですよ。
ってのことで早速試してみます。

こんな設定があったとして

http://www.example.com中にこんな設定があったとする。

ProxyPass          /   http://backend.address:port/
ProxyPassReverse   /   http://backend.address:port/

これをmod_proyx_exressで置き換える。

こんなファイルをかく

www.express.com http://backend.address:port/

例えばこのファイルを conf/map.txt として保存。

dbmファイルを作成する。

# /usr/local/apache2/bin/httxt2dbm -i map.txt -o emap

conf以下に emap.pag と emap.dir ってなファイルができます。

httpd.confを編集する。

こんなディレクティブをいれます。

    <IfModule mod_proxy_express.c>
        ProxyExpressDBMFile     conf/emap
        ProxyExpressEnable      on
    </IfModule>

でもって再起動するとOK。

残念ながら

誠に残念ながら、設定ファイルには正規表現はかけません。
なのでこんな設定は書いても意図した通りには動作しません。

www.express.com/hoge[a-Z][a-Z][0-9]$/ http://backend.address:port/$1

それにバックエンドのエントリを複数記述してもラウンドロビンして負荷分散してくれません。こんなふうに書いても

www.express.com http://backend1.address:port/
www.express.com http://backend2.address:port/
www.express.com http://backend3.address:port/

最初に一行だけにリクエストがいきます。

http://httpd.apache.org/docs/2.4/mod/mod_proxy_express.html
にも書いてあるとおり mod_proxy の代替ではなくて、mod_rewriteをproxyとして使っているときに動的にできますよってことみたい。
プロセスを再起動しなくていいのは助かるかもしれないけど、正規表現が使えないんじゃなぁ。