Apacheでリバースプロキシ

現在このBLOGを公開するのに80番ポートを使用していますが、同じ80番ポートを使ってSRXの管理WEB画面や別のサーバで構築予定のOpManagerの画面をインターネットからアクセスするため、リバースプロキシを導入することにしました。

リバースプロキシとは

まず、通常のプロキシはユーザがインターネットに接続する際に通信の仲介を行うことで、アクセス制限を行ったり、キャッシュにより効率する目的で利用されますが、リバースプロキシはサーバの手前に設置され、代理応答することによりWEBコンテンツサーバの負荷を軽減したり、ユーザのアクセスを制限してセキュリティを向上させる目的で導入されます。

リバースプロキシの構築

今回apacheにプロキシのモジュールを組み込むことで、リバースプロキシを構築します。モジュールの作成にはapxsを使っています。

オペレーションシステム FreeBSD 8.2-RELEASE
WEBサーバアプリケーション apache-2.2.19

apacheでリバースプロキシを構築するためには、「mod_proxy」と「mode_proxy_http」が必要になります。これらはapacheのソースファイルに含まれています。ここではFreeBSDらしくportsでインストールしたapacheのソースファイルを使用しています。apacheのmake時にclean指定をしていなかったためソースファイルを残しています。

# cd /usr/ports/www/apache22/work/httpd-2.2.19/modules/proxy

プロキシモジュールをapxsを使ってインストール
# /usr/local/sbin/apxs -i -a -o mod_proxy.so -c mod_proxy.c proxy_util.c
/usr/local/sbin/apxs -i -a -o mod_proxy_http.so -c mod_proxy_http.c proxy_util.c

freebsdでは自動でコンフィグにLoadModeuleを追加してくれます。
# grep mod_proxy /usr/local/etc/apache22/httpd.conf
LoadModule proxy_module       libexec/apache22/mod_proxy.so
LoadModule proxy_http_module  libexec/apache22/mod_proxy_http.so
 

apxsを使用してproxyモジュールをインストールする際は、「proxy_util.c」も一緒にコンパイルしてください。そうしないとapacheの再起動の際にLoadModuleで以下のエラーが発生します。


httpd: Syntax error on line 106 of /usr/local/etc/apache22/httpd.conf: Cannot load /usr/local/libexec/apache22/mod_proxy_http.so into server: /usr/local/libexec/apache22/mod_proxy_http.so: Undefined symbol "ap_proxy_location_reverse_map"
 

httpd.confにリバースプロキシの設定を追加します。バーチャルホストを使ってますので実際にはhttpd-vhosts.confを修正します。設定のサンプルとして「test.or2.to」にアクセスした際に192.168.40.254に転送する設定にしています。

# vi /usr/local/etc/apache22/extra/httpd-vhosts.conf

<VirtualHost *:80>
    ServerName test.or2.to
    ServerAdmin root@xxx.xx
    ErrorLog /var/log/www/test-error.log
    CustomLog /var/log/www/test-access.log common
    <Location />
    ProxyPass http://192.168.40.254/
    ProxyPassReverse http://192.168.40.254/
    </Location>
</VirtualHost>
 

コンフィグチェックしてapacheを再起動します。

 
# apachectl configtest
# apachectl restart
 

apacheの再起動が完了したら、test.or2.toにブラウザでアクセスします。無事リバースプロキシを中継してsrxの管理画面が表示できました。ここでは記載していませんがDNSにtest.or2.toのAレコードを追加しています。

jweb01.jpg

本当は、BLOGと同じドメインを使いたかったのですが、リバースプロキシにリクエストするパスと、WEBコンテンツサーバに到達する際のパスが変わってしまうとリンクが動作しないため、BLOGとは別ドメインを使いました。

 

関連記事

人気記事のランキング

トラックバックURL

このエントリーのトラックバックURL:
http://or2.to/mt/mt-tb-mt.cgi/113

コメントする