weblog of key_amb

主にIT関連の技術メモ

Apacheのリバースプロキシ設定

プロキシサーバからバックエンドのWebサーバに振り分ける設定。
例えば、プロキシサーバへ hogehoge.com というHost(HTTPヘッダ)でアクセスした際に、同じLAN内のサーバ web01 にプロキシするとする。

<VirtualHost *:80>
ServerName hogehoge.com
ProxyPass / http://web01/
ProxyPassReverse / http://web01/
ProxyPreserveHost On
</VirtualHost>

ProxyPreserveHost On をつけておくと、HTTPヘッダのHostが引き継がれる。

さて、別のホスト名 fugafuga.com でアクセスしたときも同様に web01 へプロキシしたい。かつ、web01 にリクエストした際の HTTPヘッダのHostは hogehoge.com にしたい。
そんなときはこうする。

<VirtualHost *:80>
ServerName hogehoge.com
ServerAlias fugafuga.com
ProxyPass / http://web01/
ProxyPassReverse / http://web01/
ProxyPreserveHost On
RequestHeader set Host "hogehoge.com" early
</VirtualHost>

ServerAliasの指定だけだと、HTTPヘッダのHostは fugafuga.com になるが、RequestHeader setでヘッダを書き換えることができる。"early"識別子は、Apacheのバージョンによっては、なくても動くかもしれない。