読者です 読者をやめる 読者になる 読者になる

NginxでUnicornが別Portへリダイレクトしてしまう

$http_host は ポート含む
$host は、ポート含まない

たとえば、このような経路でサイトを表示させるとき、
ブラウザ =(80)=> Cloud Front =(8000)=> ELB =(80)=> Nginx =(socket)=> Unicorn
このようにポート8000にして通過させると、Unicorn 側に 8000ポートでアクセスしたことになってしまう。

location @unicorn {
    set $proto $scheme;
    if ($http_cloudfront_forwarded_proto = "https")  { set $proto "https"; }

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $proto;
    proxy_set_header Host $host;
    # proxy_set_header Host $http_host;
    proxy_pass http://app_sock;
}