IT Notebook

とあるエンジニアの備忘録

AWSのCloudFrontを使っている時に「real_ip」をNginxのフォーマットで取得する方法

f:id:makaaso:20190225193131p:plain:w200

先日とあるEC2インスタンスのAMIを取得して、別環境で構築したときのこと。Nginxのアクセスログの「remote_host」を眺めていると別のIPアドレスに置き換わっている現象に遭遇しました。

状況

  • 前段にCloudFrontがある
  • 通常のリクエストはキャッシュしない設定
  • オリジンはELBで、EC2がアタッチされていて、その中にNginxがインストールされている

原因

  • Nginxで指定しているCloudFrontの「real_ip」が最新でなかった

対応

  • こちらのコマンドの出力結果を反映
curl -s "https://ip-ranges.amazonaws.com/ip-ranges.json" |jq -r '.prefixes | map(select(.service == "CLOUDFRONT").ip_prefix) | "set_real_ip_from" + "  " + .[] + ";"'

参考資料