Paradigm Shift Design

ISHITOYA Kentaro's blog.

mod_proxy_ajpの巻

掲題のとおり.
今までTomcatlocalhost:8080を叩いていたけれど,そろそろ綺麗なURLで開発したくなったので.


ただ,結構難あり.
例えば,http://ficus.localhost/へのリクエストを,http://localhost:8009/ficus/へリダイレクトしようと

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    ServerName ficus.localhost
    ProxyPass / ajp://localhost:8009/ficus
</VirtualHost>

とか適当にやったら動くかなーって思ったけど,ちゃんと動かず.理由は簡単で,表示されたページのリンクが全部"ficus"付いちゃうから.

で,次善策としてmod_rewrite使って,

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    ServerName ficus.localhost
    RewriteEngine on
    RewriteRule ^/ficus/(.+) /$1
    RewriteRule ^/(.*)$ ajp://localhost:8009/ficus/$1 [P,L]
</VirtualHost>

とかしてみた.遅い・・・
balancerを使うといい!とあったので

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    ServerName ficus.localhost

    <Proxy balancer://ajp-balancer/ficus> 
        BalancerMember ajp://localhost:8009/ficus
    </Proxy>

    RewriteEngine on
    RewriteRule ^/ficus/(.+) /$1
    RewriteRule ^/(.+)\.(.+) balancer://ajp-balancer/$1.$2 [P,L]
</VirtualHost>

としてみた.問題ナッシング.
というわけで,mod_jkさようなら!


・・・でもやっぱり,アプリケーション中ではURL中にstuvieって入っちゃうなぁ.かといって,RewriteRule ^/ficus/(.+) /$1をRedirect指定するとちゃんと動かなくなっちゃうし.


普通そういう使い方はしないのか知らん.mod_jkつかえってかー!fxxk