リバースプロキシとは
リバースプロキシ(reverse proxy)とは、あるサーバへのリクエストを代理として受け取り、そのサーバへ中継するような仕掛けのことを言います。
その様が、通常の内→外の中継であるプロキシの逆であることからリバースプロキシと呼ばれています。
Apacheではmod_proxyを使うことで、このリバースプロキシ機能を使うことが出来ます。
設定例
まず、リバースプロキシを設定するには下記のモジュールを有効にしておく必要があります。
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so
例えば、/yyy/ にマッチするようなリクエストを全て http://xxx.xxx/zzz/ 以下の対応するURLにリバースプロキシする場合には httpd.conf で以下のように設定します。
ProxyPass /yyy/ http://xxx.xxx/zzz/ ProxyPassReverse /yyy/ http://xxx.xxx/zzz/
上記の ProxyPassReverse はリバースプロキシ先でリダイレクトされた際に Location ヘッダを適切に書き換えるための設定です。
また、mod_rewrite を使用してリバースプロキシすることも出来ます。
上記と同じ動作であれば、以下のようになります。
RewriteEngine on RewriteRule ^/yyy/(.*)$ http://xxx.xxx/zzz/$1 [P] ProxyPassReverse /yyy/ http://xxx.xxx/zzz/
mod_rewrite の P オプションは内部的には mod_proxy を使用しているせいか、ProxyPassReverseは、mod_rewrite の P オプションとセットでも正常に使用できるようです。
https な URL に reverse proxy する場合
上記の設定で https な URL にリバースプロキシ設定をすると下記のようなエラーが出ます。
AH01961: SSL Proxy requested for xxxxxx:80 but not enabled [Hint: SSLProxyEngine]
https な URL にリバースプロキシを行うには、下記を設定する必要があります。
SSLProxyEngine On
また、SSLProxyEngine
を設定するためには下記のモジュールを有効化しておく必要があります。
LoadModule ssl_module modules/mod_ssl.so
コメント