LoginSignup
2

More than 1 year has passed since last update.

posted at

updated at

CloudFront+ALB+ECS環境で意図しないリダイレクトが発生するとき確認すること

構成

CloudFront → ALB → ECS(Nginx用コンテナ→App用コンテナ)

  • CloudFrontのドメイン → test.vamdemic.com
  • ALBのドメイン → test-alb.vamdemic.com

事象

CloudFrontでOriginに指定しているドメイン名でアクセスし、302リダイレクト処理がかかる部分で、ALBのカスタムドメイン名が返ってくる。test-alb.vamdemic.comでリダイレクトされてしまう。
もっと具体的にいうと、nginxへのリクエストの応答ヘッダーのlocationがtest-alb.vamdemic.comで返ってくる。

設定

  • Nginxコンテナのコンフィグ設定はこのような感じ
  • なのでhostヘッダーはさらに後ろのApp用コンテナへはわたっている
nginx.conf
server {
  listen 80;
  server_name _;


  location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
  }
}

原因

CloudFrontからHostヘッダーをALBへ渡す設定をしていなかったため、リクエストを実際に返すNginxはALBのドメインから来たと認識して、そのドメインをlocationヘッダーに入れていた(リダイレクトさせていた)
分かればすごく難しいということではないけれど、CloudFrontでハマる

対処

CloudFrontのBehevier→WhiteList設定でhostヘッダーを設定する
image.png

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
What you can do with signing up
2