x-ite's diary

覚え書きです。想定読者は俺

別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>