LoginSignup
2
4

More than 5 years have passed since last update.

ロードバランサー配下のWebサーバーでアクセス元IPアドレスをログ出力

Last updated at Posted at 2019-01-08

ロードバランサー配下にあるWebサーバーのログ

ロードバランサーを経由してWebサーバーにアクセスする場合、アクセス元のIPアドレスとしてロードバランサーのIPアドレスがログに記録されます。
これはWebサーバーから見れば、ロードバランサーがクライアントとして見えるためです。

#ロードバランサーによっては、設定次第でオリジナルのアクセス元IPを維持するものもあります

アクセス元IPをログに残したい

しかし、アクセス元IPをログに残しておかないと、アクセス解析やトラブルシューティングに支障をきたすことになります。
そこで、今どきのロードバランサーはhttp/httpsアクセスであれば、httpヘッダーにX-Forwarded-Forヘッダーを追加してその値にアクセス元オリジナルのIPアドレスを設定することで、Webサーバーに知らせる方法を採っています。

そうすれば、Webサーバー側はX-Forwarded-Forヘッダーに設定されているIPアドレスをログに書き込むようにすれば良いわけです。

実際の設定(Apache 2.4の場合)

Apache2.2でも設定は可能なのですが、面倒なのでここでは割愛。

前提条件としてVirtualHostディレクティブかグローバルディレクティブ内に記述する必要があります。
httpd.confに書いておくのが無難でしょう。

RemoteIPHeader X-Forwarded-For

この一文を書いておくだけで、アクセス元のIPアドレスをWebサーバー(Apache)は知ることとなるので、次にログフォーマットを設定します。

  • 変更前
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とすることで、アクセス元のIPアドレスがログに記録されます。
また、IPアドレスによるアクセス制御にも、アクセス元IPを使用することができるようになります。

AWS ELBは当然ながらX-Forwarded-Forヘッダーに対応しているので、ELBを利用する場合は必ず設定しておきたいものです。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4