Route 53 中的 CNAME - 将 www 重定向到非 www 不起作用

Route 53 中的 CNAME - 将 www 重定向到非 www 不起作用

我在 AWS 上托管 Web 应用程序,Nginx 1.6.3并且django 1.7.6

我想通过 Route 53重定向www.mydomain.commydomain.com

换句话说,mydomain.com/foo当用户输入时显示在地址栏上www.mydomain.com/foo


Route 53 配置

mydomain.com

  • 类型 :A 记录
  • 值:ALIAS {Elastic Load Balancer A 记录}

www.mydomain.com

  • 类型 :CNAME
  • 值:mydomain.com

采用上述配置,mydomain.com运行良好,但www.mydomain.com返回400 错误请求错误。当然,我已经在秘密模式(无缓存)下尝试过,时间间隔足够长(超过 24 小时)。http://在前面添加会返回相同的错误。


    server {
        listen 80;
        server_name www.mydomain.com;
        return 301 $scheme://mydomain.com$request_uri;
    }

如果我添加上述代码nginx.conf,则会按照我预期的那样www.mydomain.com重定向到。mydomain.com但是,我不确定是否有必要编辑 Web 服务器配置才能使用 CNAME 服务。如何在不编辑 Web 服务器的情况下使用 CNAME 服务?

答案1

这听起来像是预期的行为。当 HTTP 服务器收到它不知道如何处理的请求时,具体发生的情况可能有所不同,但除非在 HTTP 级别发生重定向,否则不会发生重定向。

记录CNAME仅说明 DNS 中给定的名称是 DNS 中另一个名称的别名。

当您有记录时,当您的 HTTP 客户端对别名CNAME进行A或查询时,他们将获得与返回的实际名称相关联的 IP 地址。AAAA

然后他们将连接到该地址,知道这是与他们查找的名称(别名)相关联的地址,并发出完全正常的请求。

当您拥有基于名称的虚拟主机时,HTTP 服务器关心的是标Host头所指的内容,并且客户端会将其导航到的 URL 中的任何主机名作为该标头的值(在此示例中为别名)。

如果您想要重定向 HTTP 客户端,则需要 HTTP 重定向,就像您自己的示例中那样。

相关内容