こんにちは!Tamaです!
通常Apacheの入ったWebサーバーにHTTPアクセスするとApacheのアクセスログに接続元IPが記録されます。
しかしELB経由で接続した場合アクセスログにはELBのIPが出力されると思います。
今回はELBを経由した通信の接続元IPをApacheのコンフィグファイルを編集することでアクセスログに出力してみます。
httpd.confの編集
/etc/httpd/conf/httpd.confを編集します。
「LogFormat」で始まるログのフォーマットを設定している部分があるかと思います。
1494 #2495 # The following directives define some format nicknames for use with3496 # a CustomLog directive (see below).4497 #5498 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined64997500 LogFormat "%h %l %u %t \"%r\" %>s %b" common8501 LogFormat "%{Referer}i -> %U" referer9502 LogFormat "%{User-agent}i" agent10503標準でアクセスログに出力されるcombinedに「X-Forwarded-For」ヘッダを追記し書き換えます。
今回は以下の様に先頭に記述しました。
※アクセスログとして出力されるフォーマットは「CustomLog」で確認できます。
1LogFormat "%{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ファイルを編集するのが一番簡単で手っ取り早いのではないかと個人的には思います。
またお会いしましょう!