構成
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でハマる