Apacheでリバースプロキシを構築(SSL通信転送付き)
とりあえず、ざっくり簡単に!Apacheでリバースプロキシを構築しました(SSL通信転送付きです)。凝った設定は何もしていませんが、構築手順を掲載しておきます。
HTTPやHTTPSで来た通信を、背後(ネットワーク内部)にいるWebサーバーへ転送するだけです。HTTPだけでなく、HTTPSも転送されるようにしていますが、SSL証明書は何もいじっていません(自己証明書/なんちゃって証明書のまま)。
本当にざっくり簡単に作っただけですので、ご了承ください…。
リバースプロキシサーバーの環境
Apache 2.2.3 + mod_proxyを使ってリバースプロキシを構築しています。OSは「CentOS5.6」。
httpd.confの編集
# vi /etc/httpd/conf/httpd.conf
<IfModule mod_proxy.c> ←コメントアウトされているので、コメントインする
ProxyRequests Off ←フォワードプロキシ機能の無効化
<Proxy *> ←プロキシ利用者のアクセス制御はここで設定
Order deny,allow
Allow from All ←とりあえず全許可
</Proxy>
<VirtualHost *:80> ← VirtualHostで80ポートを指定しないと、HTTPS(443)もここで処理されてしまう
ServerName リバースプロキシのIPまたはFQDN:80 ←なくても動く?でも決まっているなら指定しておこう。
ProxyPass / http://転送先WebサーバーのIPまたはFQDN
ProxyPassReverse / http://転送先WebサーバーのIPまたはFQDN/
</VirtualHost>
~~ 省略~~
</IFModule> ←コメントアウトされているので、コメントインしておこう
# End of proxy directives.
ProxyPassの代わりにRewriteRule機能を使う場合は、
RewriteEngin on
RewriteRule ^/(.*)$ http://192.168.22.201$1 [P,L]
とか記述する。
ssl.confの編集 (SSL通信もWebサーバへ中継したい場合)
httpd.confで以下のような記述があり、/etc/httpd/conf.d/ssl.confがインクルードされていること。
#
# Load config files from the config directory “/etc/httpd/conf.d”.
#
Include conf.d/*.conf
ssh.confを編集する
# vi /etc/httpd/conf.d/ssl.conf
#<VirtualHost _default_:443> ←コメントアウトしておく
<VirtualHost *:443>
ServerName リバースプロキシのIPまたはFQDN:443
~~(省略)~~
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
SSLProxyEngine on ← SSLもリバースプロキシする場合は必須
ProxyPass / https://転送先WebサーバーのIPまたはFQDN/
ProxyPassReverse / https://転送先WebサーバーのIPまたはFQDN/
~~(省略)~~
</VirtualHost>
一応configの文法チェックをして、httpdサービスを起動。
以上です。
Apacheについて詳しく学びたい場合は、以下の書籍なども参考にしてみてください。