hello-world.jp.net
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

[mac]CyberduckでCloud Frontのキャッシュを削除

macのs3クライアントとして時々、 Cyberduckを使っているのですが、CyberduckからCloudFrontのキャッシュも削除できたので方法をメモしておきます。

[rails]cap deploy時に複数のAuto Scalingグループにもデプロイしたい

先日、AWSのAuto Scallingを使った際に、cap deploy時にAuto Scaleインスタンスにも自動でデプロイできるようにする必要があったので調べたところ、

[ELB]SSL証明書設定の権限を持つIAMユーザPolicy

もともとはAWSの明細情報閲覧と、IAM管理を無効にしたユーザとして、以下のようなPolicy設定を行っていました。

[aws][mysql5.6]microインスタンス使用時にメモリ不足になったのでmysqlの設定を調整

AWSでt2.microインスタンスを使用して色々動かしていたら、あるスクリプトの実行時に