我在 AWS 上托管 Web 应用程序,Nginx 1.6.3
并且django 1.7.6
我想通过 Route 53重定向www.mydomain.com
至mydomain.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 重定向,就像您自己的示例中那样。