$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; }