40
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

nginxで複数のproxyを経由する場合でもアクセス元IPアドレスを取得する

Posted at

nginxでアクセス元IPを使って、ログを残したりアクセス制限をしたいときに、手前にELBなどが入っていると、そのままではクライアントのIPアドレスではなく、ELBのアドレスが取得されてしまいます。

ELBだけであれば、以下のページの設定で対応できます。

しかし、ELB以外のサーバなども間に入ってくると、これだけでは対応できません。
複数のProxyを通る場合、X-Forwarded-Forは複数の値が入ります。

X-Forwarded-For: client1, proxy1, proxy2, ...

この場合でも一番左のアドレスを取得するためには、複数の set_real_ip_fromを記述し、また、real_ip_recursiveを有効にします。

例えば次のような感じです。

set_real_ip_from XXX.XXX.XXX.XXX/24;
set_real_ip_from YYY.YYY.0.0/16;
real_ip_header X-Forwarded-For;
real_ip_recursive on;

これで期待するアクセス元IPアドレスが取得できるようになります。

参考

40
27
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
40
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?