Nginxのリバースプロキシでバックエンドにリモートアドレスを転送する

NO IMAGE

 「NginxでWordPressのスマホページを高速化してみる」でNginxの設定変更するのと平行して、バックエンドのウェブサーバをNginxからApacheに変更したのですが、Apacheで取得したリモートアドレスが全てNginxのIPアドレスになっていたので改善してみました。

 まずバックエンドのApacheでリモートアドレスを取得するために、Nginx側でX-Forwarded-Forの設定を行います。X-Forwarded-Forは、プロキシを経由したときに接続元のIPアドレスを通知するために用意されている環境変数で、経由したプロキシのIPアドレスの履歴が格納されています。

 次にX-Forwarded-Forに設定されているIPアドレスを、Apacheでリモートアドレスとして利用できるようモジュールを追加します。今回はmod_rpafというモジュールを利用しましたが、他にもmod_extract_forwardedというモジュールもあります。どちらも機能的には大きな違いはないと思います。

 ホームページ(http://stderr.net/apache/rpaf/)から最新版のmod_rpaf-0.6.tar.gzをダウンロードして任意の場所に展開します。

 上記のサイトは、現在閉鎖されてしまっているようです。こちらからダウンロードすることができます。

 私の環境ではそのままだとmakeが通らなかったので、Makefileを修正してからmakeを行いました。

 インストールが完了したら、httpd.confに以下を追加して、Apacheをリスタートします。

 WordPressを利用していく上でバックエンドもNginxの構成の方が余計なリソースを消費せず高負荷時にも安心なのですが、Apacheを利用したほうが使い勝手がよさそうな気がしたので思い切って変更してみました。それぞれの良いところを上手に利用していければって思います。