AWS上的nginx $ host变量不正确

时间:2017-04-20 21:36:12

标签: amazon-web-services nginx amazon-ec2

我想将http请求重定向到https on和运行nginx的AWS EC2实例。我试过这个:

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/

这意味着变量$ host的值为compute.amazonaws.com,这对我没有帮助。我需要访问ec2-xx-xx-xxx-xxx.rr-rrrr-r.compute.amazonaws.com

我不想对网址进行硬编码,如下所示:

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

因为我将实例的AMI提供给其他人供他们使用,所以主机名将会改变并且无论他们选择什么。

1 个答案:

答案 0 :(得分:1)

我不认为该实例知道它的公共主机名。但您可以使用以下端点(from docs)从实例查询它:

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

然后您可以自己将其保存到变量中并在配置中使用它。