我想将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提供给其他人供他们使用,所以主机名将会改变并且无论他们选择什么。
答案 0 :(得分:1)
我不认为该实例知道它的公共主机名。但您可以使用以下端点(from docs)从实例查询它:
curl -l http://169.254.169.254/latest/meta-data/hostname
然后您可以自己将其保存到变量中并在配置中使用它。