この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
ELB経由の接続はログにプライベートIPが記述される
AWSにてELB(ロードバランサー)を設定しているEC2のアクセスログを確認すると、接続元IPアドレスがELBのプライベートIPアドレスになっています。今回はnginxにてELB経由の接続でも、接続元のグローバルIPアドレスを取得する方法をご紹介します。
アクセスログのサンプル
下記のログファイルの抜粋は、ELBに接続されたEC2のアクセスログです。見事に接続元のIPアドレスがELBのプライベートIPアドレスになってますね。
1 2 3 4 |
172.31.23.87 - - [22/Sep/2018:05:06:28 +0000] "GET /index.html HTTP/1.1" 200 152 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" 172.31.15.43 - - [22/Sep/2018:05:06:54 +0000] "GET /index.html HTTP/1.1" 200 152 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" 172.31.23.87 - - [22/Sep/2018:05:06:58 +0000] "GET /index.html HTTP/1.1" 200 152 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" 172.31.15.43 - - [22/Sep/2018:05:07:24 +0000] "GET /index.html HTTP/1.1" 200 152 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" |
接続元IPアドレスの取得方法
nginxの設定ファイルに下記の設定を追記しましょう。
ELBが使用する[172.31.0.0 ~ 172.31.255.255]のIPアドレスに対して、接続元のIPアドレスを表示する設定を付与します。
1 2 |
set_real_ip_from 172.31.0.0/16; real_ip_header X-Forwarded-For; |
さいごに
対処方法は簡単なのでELBに接続するEC2サーバーには必ず設定しましょう。何かの調査や確認をしようとしたときに、アクセスログの接続元IPアドレスがローカルIPで愕然としないようにして注意してくださいね。
※ELBの最初に使用したときの私は、調査するときにアクセスログの接続元IPアドレスが全てローカルIPで保存されていて絶望を覚えました( ;∀;)