こんにちは!Tamaです!
通常Apacheの入ったWebサーバーにHTTPアクセスするとApacheのアクセスログに接続元IPが記録されます。
しかしELB経由で接続した場合アクセスログにはELBのIPが出力されると思います。
ELBの特性上IPアドレスがコロコロ変わる。
今回はELBを経由した通信の接続元IPをApacheのコンフィグファイルを編集することでアクセスログに出力してみます。
httpd.confの編集
/etc/httpd/conf/httpd.confを編集します。
「LogFormat」で始まるログのフォーマットを設定している部分があるかと思います。
1 2 3 4 5 6 7 8 9 10 |
494 # 495 # The following directives define some format nicknames for use with 496 # a CustomLog directive (see below). 497 # 498 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 499 500 LogFormat "%h %l %u %t \"%r\" %>s %b" common 501 LogFormat "%{Referer}i -> %U" referer 502 LogFormat "%{User-agent}i" agent 503 |
標準でアクセスログに出力されるcombinedに「X-Forwarded-For」ヘッダを追記し書き換えます。
今回は以下の様に先頭に記述しました。
※アクセスログとして出力されるフォーマットは「CustomLog」で確認できます。
1 |
LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined |
「X-Forwarded-For」はロードバランサーなどを介した場合に付与されるhttpヘッダの1つで接続元IPを示しています。
他にもプロトコル(HTTP/HTTPS)を識別するX-Forwarded-Proto
接続元ポートを識別するX-Forwarded-Port
ヘッダがあります。
confファイルを変更した後は設定ファイルの再読み込みを行います。
1 |
/etc/init.d/httpd reload |
設定できているかアクセスログを確認してみましょう。
[接続元IP] [ELBのIP] ~
のように出力されているかと思います。
今回は以上になります!
お疲れさまでした!
他にもApacheのモジュールを入れるなどの方法がありますがconfファイルを編集するのが一番簡単で手っ取り早いのではないかと個人的には思います。
またお会いしましょう!
【12月4日(金)15:00~】【AWS AI/MLオンラインセミナー】ABEJA様/ブレインズテクノロジー様/dotData Japan様との共同登壇!視聴無料!まだ申し込み可能です。
申し込みはこちら