duyojiぶろぐ

技術系ときどき日常系

ELASTIC LOAD BALANCERS(ELB)経由を使った場合のリクエスト元を取得する

Apacheのログフォーマットの形式についてもあまり知らなかったからログフォーマットの学習もかねてみた。

特にログフォーマットとか気にせずロードバランサー経由でも アクセス元のIPを表示したい場合は以下の参考にしたURLでも紹介している ELB配下のEC2アクセスログについてあれこれの最初に書かれている以下のコードを書けば良い。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
↓  #このように変更
LogFormat "%h %l %u %t %D \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %{X-Forwarded-For}i %{X-Forwarded-Proto}i" combined

上記のように変更するとそれぞれのパラメータは以下のようになる。 Apache モジュール mod_log_configを参照するともっと理解できる思う

リクエストURL : http://example.com/index.php

  • %h ・・・ ELBのIPが表示される
  • %l ・・・ 「-」
  • %u ・・・ 「-」
  • %t ・・・ [15/Dec/2012:20:25:40 +0900]
  • %D ・・・リクエストを処理するのにかかった時間、マイクロ秒単位
  • %r ・・・ GET /index.php?=PHP~~(文字列) HTTP/1.1
  • %s ・・・ ステータス(例200) ( 最後のステータスは %>s )
  • %b ・・・ 「レスポンスのバイト数(例2130)」
  • %{Referer}i ・・・リクエストURL(例 : http://example.com/)
  • %{User-Agent}i ・・・ユーザーエージェント(例 : Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/522.21 (KHTML, like Gecko) Chrome/23.0.1111.90)
  • %{X-Forwarded-For}i ・・・ アクセス元IP(例 : 111.11.111.11)
  • %{X-Forwarded-Proto}i ・・・ プロトコル(例 : http)

参考にしたURL