dehio3’s diary

仕事、生活、趣味のメモ

ELB経由のアクセスでapacheのアクセスログの最初に表示されるIPを元のIPに変える

環境

$ sudo /usr/sbin/httpd -V
Server version: Apache/2.4.6 (CentOS)
Server built:   Nov 19 2015 21:43:13
Server's Module Magic Number: 20120211:24
Server loaded:  APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2

やりたいこと

  • apacheアクセスログの先頭のIPからアクセス元IPを判断してる。
  • ELB経由のアクセスにすると先頭のIPがELBのIPになるため判断できなくなるのを解消したい。

対応

  • mod_remoteipモジュールで、リモートIPアドレスをX-Forwarded-Forに書き換える
$ cat /etc/httpd/conf.d/remote_ip.conf
<IfModule remoteip_module>
    RemoteIPHeader X-Forwarded-For
</IfModule>
$ cat /etc/httpd/conf/httpd.conf
#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

先頭を%hから%aに変更する。

ちなみにLogFormatで直接%{X-Forwarded-For}iを指定するやり方もあるけど、アクセス元がX-Forwarded-Forヘッダが付いている状態だとカンマ区切りでアクセス元と、ELB両方のIPが表示されるので注意。

cloudpack.media