2017-04-20 33 views
1

http要求をhttps onおよびnginxを実行しているAWS EC2インスタンスにリダイレクトします。私はこれを試してみました:

私はもともとこのURLを持っている場合ので、これが失敗した
server { 
    listen 80; 
    return 301 https://$host$request_uri; 
} 

server { 
    listen 443; 
} 

http://ec2-xx-xx-xxx-xxx.rr-rrrr-r.compute.amazonaws.com/some/uri/ 

それはにリダイレクトされます:変数$ホストが値を持っていることを意味する

https://compute.amazonaws.com/some/uri/ 

compute.amazonaws.com、これは私には役に立ちません。 ec2-xx-xx-xxx-xxx.rr-rrrr-r.compute.amazonaws.comにアクセスする必要があります。

私はこのように、URLをハードコーディングする必要はありません

:私はそれらを使用するために他の誰かにインスタンスのAMIを与えているので、ホスト名を変更すると、彼らが選択したものは何でもなりますので、

server { 
    listen 80; 
    server_name ec2-xx-xx-xxx-xxx.rr-rrrr-r.compute.amazonaws.com; 
    return 301 https://$server_name$request_uri; 
} 

答えて

0

私はインスタンスがその公開ホスト名を知っているとは思わない。

curl -l http://169.254.169.254/latest/meta-data/hostname 

次に、あなたが変数に自分自身をそれを保存し、コンフィギュレーションでそれを使用することができます。しかし、あなたは次のエンドポイント(from docs)を使用して、起動時にインスタンスからそれを照会することができます。

+0

非常に参考になりました。ありがとうございます。 – complex

関連する問題