【Apache】リバースプロクシ下でログに正常な IP アドレスを記す


以前の記事で、nginx のリバースプロクシ機能を使い、Apache を裏方として動かすことにしたのですが、そうなると一つ問題がありました。Apache のログに記される要求元アドレスが全て nginx のアドレス、つまり 127.0.0.1 になってしまうのです。

120825-0003.png

127.0.0.1 - - [29/Jul/2012:21:00:40 +0900] "GET /2012/07/mountain-lion-apache.html HTTP/1.0" 200 6823 "https://blog.delphinus.dev/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:14.0) Gecko/20100101 Firefox/14.0.1"
127.0.0.1 - - [29/Jul/2012:21:00:40 +0900] "GET /styles.css HTTP/1.0" 200 1063 "https://blog.delphinus.dev/2012/07/mountain-lion-apache.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:14.0) Gecko/20100101 Firefox/14.0.1"
127.0.0.1 - - [29/Jul/2012:21:00:40 +0900] "GET /mt.js HTTP/1.0" 200 9601 "https://blog.delphinus.dev/2012/07/mountain-lion-apache.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:14.0) Gecko/20100101 Firefox/14.0.1"

nginx が Apache へリクエストする際には X-Forwarded-For ヘッダに要求元の IP アドレスを載せていますから、このアドレスを Apache のログにそのまま記してくれればいいわけです。

それをやってくれるのが mod_rpaf モジュールです。

mod_rpaf for Apache
http://stderr.net/apache/rpaf/

Apache 2.0 対応という割と古いモジュールですが、Apache 2.2 環境下でも問題なく動いています。

インストール

$ curl -LO http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
$ tar zxvf mod_rpaf-0.6.tar.gz
$ cd mod_rpaf-0.6.tar.gz
$ vim Makefile

Makefile を修正します。色の付いた部分に apxs の正しいパスを入れてください。

# Makefile for mod_rpaf.c (gmake)
# $Id: Makefile 16 2007-12-13 03:40:22Z thomas $
APXS=$(shell which apxs)
APXS2=/usr/sbin/apxs

default:
        @echo mod_rpaf:
        @echo nevest version available at http://stderr.net/apache/rpaf/
        @echo
        @echo following options available:

あとは make & make install するだけでインストール完了です。

# Apache 2.2 だけど 2.0 を指定
$ make rpaf-2.0
$ make install-2.0

Apache の設定

httpd.conf のどこかに以下のように記述してください。

LoadModule rpaf_module libexec/apache2/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 10.0.0.1
RPAFheader X-Forwarded-For

Apache を再起動すると、IP アドレスが正常に記されるようになりました。

コメントを残す