Redirect CloudFront-CNAME不';在nginx中不匹配

Redirect CloudFront-CNAME不';在nginx中不匹配,redirect,nginx,amazon-cloudfront,cname,Redirect,Nginx,Amazon Cloudfront,Cname,我的发行版有两个CNAMES:example.com和www.example.com。我的目标是将www.example.com重定向到example.com CloudFront指向LoadBalancer,后者指向EC2机器。这台EC2机器为nginx服务 我的配置是: server { listen 80; server_name default; access_log /var/log/nginx/default.access.log; root /xxxx/

我的发行版有两个CNAMES:example.com和www.example.com。我的目标是将www.example.com重定向到example.com

CloudFront指向LoadBalancer,后者指向EC2机器。这台EC2机器为nginx服务

我的配置是:

server {
  listen   80;
  server_name default;
  access_log  /var/log/nginx/default.access.log;

  root   /xxxx/;
  index  index.html index.htm;

  location /index.html {
        add_header "Cache-Control" "public, must-revalidate, proxy-revalidate, max-age=0";
  }
}

server {
  listen  80;
  server_name ~^(www\.)?(?<domain>.+)$;
  return 301 https://$domain$request_uri;
}
服务器{
听80;
服务器名称默认值;
access_log/var/log/nginx/default.access.log;
根/xxxx/;
index.html index.htm;
location/index.html{
添加_头“缓存控制”“公共,必须重新验证,代理重新验证,最大年龄=0”;
}
}
服务器{
听80;
服务器名称^(www\)(?.+)$;
返回301 https://$domain$request\u uri;
}
问题是“服务器名称”接收的是“XXX-YYY-ZZZ-WWW.ap-northeast-1.elb.amazonaws.com”,而不是CNAME(因此我没有获取域的信息)


有什么解决方案吗?

您可以尝试在CloudFront中启用主机头的转发(请参阅此处的详细信息:)。然后,您应该在nginx配置中使用主机头值来触发重定向