Apacheで簡単にリバースプロキシ構築(SSL通信転送付き)

Apacheでリバースプロキシを構築(SSL通信転送付き)

photo by: Norlando Pobre

とりあえず、ざっくり簡単に!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について詳しく学びたい場合は、以下の書籍なども参考にしてみてください。

   

タイトルとURLをコピーしました