N-LAB

ApacheアクセスログでクライアントのIPアドレスを表示する方法


目標


前提


目次

  1. Apache設定ファイルの編集
  2. X-Forwarded-For


1. Apache設定ファイルの編集


1. Apacheの設定ファイル(httpd.conf/apache2.conf)をテキストエディタで開き、変更後の内容に修正して保存します。
<変更前>

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

<変更後>

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined


2. Apacheを再起動します。

3. ApacheにHTTP/HTTPSアクセスした際に、ロードバランサーのIPアドレスではなく、クライアントのIPアドレスがアクセスログに出力されていることを確認します。
※ロードバランサーにAWSのApplication Load BalancerまたはClassic Load Balancerを利用している場合でも上記の設定を行うことで、クライアントのIPアドレスをアクセスログに出力することが可能です

2. X-Forwarded-For

X-Forwarded-For: xxx.xxx.xxx.xxx



X-Forwarded-Host:クライアントによってリクエストされた元のホストとポートを格納します。リバースプロキシ (ロードバランサー、 CDN) のホスト名とポート番号が異なる場合に元のホストを判別することが可能です。

X-Forwarded-Host: www.foo.com:8080


X-Forwarded-Proto:クライアントがプロキシやロードバランサーに接続するために使用したプロトコルを識別します。

X-Forwarded-Proto: https


X-Forwarded-Port:クライアントがプロキシやロードバランサーへの接続に使用したリスナー・ポート番号を識別します。

X-Forwarded-Port: 443