別VirtualHostの設定がAlias先に適応されず、当たり前に効かない件
当たり前すぎるけど、冷静に判断しないとはまるので次回の俺へメモ。
自分の運用方法では、mod_phpでアプリケーションを構築する際にアプリケーションごとによくNameVirtualHostをきってポートを分けて複数立ち上げる場合がある。それをプロキシーさせて名前ベースで運用する。
APPサーバー内でプロキシも実現しようと、簡易的に、Aliasでなんちゃってプロキシ風(プロキシじゃないけどこの場合、実現したいことはほぼ一緒)をしたときにはまった。
<VirtualHost *:50001> ServerName app1.private.example.com DocumentRoot /path/to/app1/htdocs #適当な設定 php_value mbstring.internal_encoding UTF-8 </VirtualHost>
<VirtualHost *:50002> ServerName app2.private.example.com DocumentRoot /path/to/app2/htdocs </VirtualHost>
これを80番ポートで公開したい時、同じサーバー内でmob_proxy_balancerはちょっと大げさ。
そもそも、80番で複数公開すればいいんじゃないかという話もあるけどそれはしないと運用ルールで決めた。
<VirtualHost *:80> ServerName public.example.com AliasMatch ^/app1(.*) /path/to/app1/htdocs/$1 </VirtualHost>
設定は適当。
言いたいのは、php_valueで設定されたものはそのVirtualHost内で有効なのであって、
Alias先では無効だということ。実現したいことが一緒なので実現方法が違ってもちょっと混乱した。
<VirtualHost *:80> ServerName public.example.com AliasMatch ^/app1(.*) /path/to/app1/htdocs/$1 #こっちで設定 php_value mbstring.internal_encoding UTF-8 </VirtualHost>