リバースプロキシを利用する上での問題点

Apache2.0から利用可能となったリバースプロキシ機能で ProxyPassとProxyPassReverseを利用することで本格的なロードバランサーを作成できる。
ただ、このロードバランサーを利用する上での問題点もあることは事実。その問題点について説明したい。
1.ProxyPassの指定先が異なるディレクトリだった場合においてコンテンツ内に絶対パスが含まれているとリンクがうまくいかない
たとえば、
ProxyPass / http://192.168.0.1/
などであれば問題はないが、
ProxyPass /share http://192.168.0.1/
などとしてしまうと絶対パスが指定されたリンクではうまく行かないことがある。また、baseタグが利用されているコンテンツがある場合にも注意が必要。
2.ProxyPassの指定先のホストが外部からは接続できないようなセグメントに配置されている場合において、HTTP_HOSTというサーバー環境変数をリンクに利用している場合にうまくいかない
たとえば、
ProxyPass / http://192.168.0.1/
と設定してリバースプロキシサーバーにグローバルIPアドレスが振られているケースでインターネットからリバースプロキシサーバーにアクセスするとはHTTP_HOSTの返答値が192.168.0.1になってしまい、それがリンクに使われているようなことがあると、そのリンク先をクリックすることでプライベートIPアドレスに接続に行ってしまうことになる。これはSERVER_NAMEという環境変数を使った上で、httpd.confのServerNameの設定値が外部DNSにおいて正引き可能なホスト名でかつ外部から到達可能なIPアドレスで解決できなければならない。なお、UseCanonicalNameがOffになっているとhttpd.confのServerNameは利用されないので、Onにする必要がある。(ApacheのデフォルトはOn)
もしリバースプロキシによるロードバランシングを検討されている場合には、上記のようなコンテンツ構成になっていないかを注意する必要があるだろう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です