hello-world
webエンジニアのメモ。とりあえずやってみる。

Nginx + ELB 使用時にアクセス元IPが正しく記録されるようにする

公開日時

ELB(Elastic Load Balancing)使用時にはまったのでメモ。

ELBを使用した場合、アクセス元IPがELBのIPアドレスになってしまうため、アクセスログに本来のIPが記録されなかったり、allowに許可IPを設定しても正しく動作しない問題が発生します。

そこでアクセス元IPが正しく記録されるようにnginxの設定を修正します。

1. NginxにHttpRealipModuleが組み込まれているかを確認

nginx -V

を実行し、「--with-http_realip_module」が表示されていることを確認

2. nginx.confを修正

通常は「set_real_ip_from」に「10.0.0.0/8」を設定

VPCを使用している場合はELBが所属するサブネットのネットワークアドレスを指定するそうです

「real_ip_header」には「X-Forwarded-For」を指定します

http {
  …
  set_real_ip_from   10.0.0.0/8;
  real_ip_header     X-Forwarded-For;
  …
}

もしくは

server {
  …
  set_real_ip_from   10.0.0.0/8;
  real_ip_header     X-Forwarded-For;
  …
}

3. nginxを再起動してアクセスログを確認

アクセスログには正しいアクセス元IPが記録されるようになっています。

また、allowの設定も正しく動作するようになります。

参考


Related #aws

[aws]s3 lsで取得したファイルを更新日時順でソートする

s3 lsコマンドを利用するとバケットに保存されているファイル情報を取得できます。

AWS SAMを使って署名付きURL発行APIを作る

S3の署名付きURL発行機能の検証を兼ねて、S3のキーをパラメータとして受け取り、署名付きURLを発行するAPIを作ってみました。

s3cmdの設定をプロジェクト毎に管理する

以前、 s3cmdをmacで使う方法 を書きましたが、 プロジェクトごとに異なるバケットを使用している場合は設定ファイルもプロジェクト毎に管理したいです。

[aws]s3バケットにIP制限をかける

s3にはbasic認証を設定することはできないのですが、IP制限なら設定することができます。