ALB使用時、ApacheのアクセスログにクライアントIPを記録する
EC2(Apache)の前段に、ALBを配置する構成はよくあると思いますが、
デフォルトの状態だと、ApacheのAccessログに、ALBのローカルIPが記述されてしまいます。
本来のアクセス元の情報を、Accessログに記録する場合のApache設定方法を記載します。
設定方法(Apache)
httpd.conf のログ出力設定を変更します。
ログフォーマット設定に「"%{X-Forwarded-For}i」を追記することで、
本来のアクセス元のIP(ClientIP)を記録させることが出来ます。
httpd.conf (Befor)
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
httpd.conf (After)
<IfModule log_config_module>
LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b" common
※common については、必要であれば追記願います。
設定変更後
httpdをリスタートし、設定情報を反映しましょう
# systemctl restart httpd
おまけ
ALBからのヘルスチェックは、30秒おきにログに登録され
ログ解析の際に邪魔になるのでAccessログに記載しないようにしましょう。
httpd.confの<IfModule log_config_module>へ下記を追記
SetEnvIf User-Agent "ELB-HealthChecker.*" nolog
CustomLog "/var/log/httpd/access.log" combined env=!nolog