Ubuntu上のApacheでリバースプロキシ
Ubuntu 12.04のApacheでリバースプロキシの設定する時にハマったのでメモ.
Apacheは入ってるものとする.
必要なパッケージのインストール
mod_html_proxyが必要なので,aptでインストールする.
$ sudo apt-get install libapache2-mod-proxy-html libxml2-dev
モジュールを有効化
必要なモジュールを有効にする.
$ sudo a2enmod proxy proxy_http proxy_html
リバースプロキシの設定
ここでは,公開サーバ http://example.com/proxy/ へのアクセスを内部サーバ http://192.168.1.1/ にプロキシする.
/etc/apache2/mods-enabled/proxy.confの</IfModule>の前に以下の内容を追加.
ProxyPass /proxy/ http://192.168.1.1/ ProxyPassReverse /proxy/ http://192.168.1.1/ SetOutputFilter INFLATE;proxy-html;DEFLATE ProxyHTMLURLMap http://192.168.1.1 /proxy
/etc/apache2/mods-enabled/proxy_html.confの先頭に以下の内容を追加.
LoadFile /usr/lib/x86_64-linux-gnu/libxml2.so
これでOKなので,apacheを再起動して動作確認する.
$ sudo service apache2 restart
まとめ
SetOutputFilter INFLATE;proxy-html;DEFLATEでハマった.
(最初はSetOutputFilter proxy-htmlしか書いてなくてページを表示できなかった.)
これで,HTMLソース内のURLも書き換えられるようになったので便利.