apacheでリバースプロキシの設定をしました。

■ 条件など

・Apacheのバージョンは2.2.8

・画像、css、jsなどの静的ファイルについてはリバースプロキシで配信を行う。

・動的なファイルのときはアプリケーションサーバにリクエストをプロキシする

・画像、css、jsのパスはそれぞれ以下の通り

・アプリケーションサーバのIPは192.168.0.100

設定は「サーバ/インフラを支える技術」を参考にしています。

■ 設定

リバースプロキシの設定を行うのに必要なApacheのモジュールは以下のとおりです。

設定は、リバースプロキシサーバーのhttpd.confとか、httpd.confの下のほうにある

のIncludeの部分をコメントアウトして、httpd-vhosts.confを編集します。

設定の内容は以下のようになります。

これでapacheを再起動すればバースプロキシの設定は終了です。簡単ですね。

一度リクエストをかけた後、リバースプロキシ、アプリケーションサーバの両方でaccess_logをみて、うまくリクエストを振り分けられたかどうか確認できます。

■ ssl通信を処理するときの設定

上記設定は80番のポートに対しての設定だったので、ssl通信についてもリバースプロキシで処理する場合はもう少し設定が必要す。

sslでのリクエストの場合は、私の環境ではhttpd.confを以下のように編集して、

httpd-ssl.confというファイルで設定をしています。
以下、これを前提に記述します。

sslでリクエストがきた場合、httpd-ssl.conf内の

のディレクティブの設定が適用されます。

設定自体は、上記ディレクティブ内に

と書けばOKです。

設定の通り、リバースプロキシーとアプリケーションサーバ間のリクエストは非sslとなるので、アプリケーション側でsslでのリクエストかどうかを知りたい場合は、ちょっと工夫が必要です。

以下のように、プロキシさせる場合にはヘッダーを設定して、

phpの場合は、アプリケーション側で以下のようにして感知できます。

■ 参考文献
サーバ/インフラを支える技術