Apacheのリバースプロクシは、ファイヤーウォールの内側にあるサーバの公開や、システムの拡張等につかえる技術です。
今回は、公開ネットワークにあるhostAのApacheを使って非公開ネットワークにあるhostBのWebページを公開しました。
以下手順です。
- 運がよければ「1. リバースプロクシの設定」だけをすればOKです。RedHatインストール済みのマシンを使っている場合などはこれに当てはまるかもしれません。
- ちょっとだけ運が悪いと「2. proxy_moduleとproxy_http_moduleをロードする方法」までやる必要がありますが、ここまでは大した手間ではありません。
- 最悪なのは「3. モジュールproxy_moduleとproxy_http_moduleのインストール」まで必要になる場合です。Apacheのソースをダウンロードするところから始まります。お腹がすいている場合は何か食べてから落ち着いて始めましょう。
1. リバースプロクシの設定
hostAのhttpd.confに以下の設定をします。
これでブラウザからhttp://hostA/hogeにアクセスするとhttp://hostB:8080/hogeが表示されます。
ProxyPass http://hostB:8080/hoge ProxyPassReverse http://hostB:8080/hoge
なお、この設定を使うためにはproxy_moduleとproxy_http_moduleの2つのモジュールが必要です。
ロードされているかどうかを確かめるにはapachectl -Mを実行します
% apachectl -M ・ ・ ・ proxy_module (shared) proxy_http_module (shared)
2. proxy_moduleとproxy_http_moduleをロードする方法
ロードされていなければhttpd.confに以下を追記しましょう。
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so
3. モジュールproxy_moduleとproxy_http_moduleのインストール
Apacheの機動でエラーが出る場合にはproxy_moduleとproxy_http_moduleがまだインストールされていない(modulesディレクトリにこれらのファイルがない)可能性があります。この場合には別途インストールが必要です。
- Apacheのバージョンを確認する
モジュールのインストールにはApacheのソースが必要になるのですが、その前に現在動いているApacheのバージョンを確認します。Apacheのバージョンは以下で確認できます。
% httpd -version Server version: Apache/2.2.11 (Unix) Server built: Mar 21 2009 14:32:01
- Apacheのソースをダウンロードする
適当なサイトから現在動いているApacheのバージョンと同じものをダウンロードします。解凍もします。
% wget http://www.meisei-u.ac.jp/mirror/apache/httpd/httpd-2.2.11.tar.gz % tar xvfz httpd-2.2.11.tar.gz
- apxsを使ってコンパイルとインストールをする
# su # cd httpd-2.2.11/modules/proxy # /usr/local/apache2/bin/apxs -i -c mod_proxy.c proxy_util.c # /usr/local/apache2/bin/apxs -i -c mod_proxy_http.c proxy_util.c
- Apache再起動
後はApacheを再起動すれば大丈夫なはず
# apachectl restart
ではでは