使用Nginx路由53 CNAME

时间:2015-02-05 07:21:25

标签: nginx dns cname amazon-route53

我有一个域,其DNS条目正在使用AWS Route53进行管理。

我在数据中心有30个服务器,只有私有IP,这些服务器上托管的站点使用具有公共IP的nginx代理服务器加载。

为此,我创建了一条A记录(比如* .abc.com一个IPofproxy),然后我在代理服务器上添加了一些重定向规则来加载相应的站点。

代理服务器上的

重定向规则如下:

1.abc.com重定向到1.1.1.1

2.abc.com重定向到2.2.2.2

3.abc.com重定向到3.3.3.3等

但现在我遇到了CNAME的问题,

问题是, 我创建了一些CNAME记录,如:

abc.abc.com CNAME 1.abc.com

def.abc.com CNAME 2.abc.com

fgh.abc.com CNAME 3.abc.com等

然后我尝试访问所有上述域名(abc.abc.com,def.abc.com等),但所有站点只指向一个服务器,这是第一个重定向规则服务器。

我是nginx的新手,如果有人帮我解决这个问题会很棒。

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的配置,您遇到的问题与Route 53或Nginx无关。

相反,它与网络浏览器如何与DNS条目交互有关。您对任何反向代理服务器都存在此问题。

您必须单独配置代理中的每个CNAME条目,因为浏览器并不关心CNAME条目 - 每个请求发送的Host:标头是浏览器的主机名以开头,而不是浏览器在遍历任何CNAME后最终得到的主机名。

a.example.com  IN  A     203.0.113.1
b.example.com  IN  CNAME a.example.com.

b.example.com的请求将由代理根据b.example.com的规则由a.example.com的规则路由,因为CNAME会不要更改浏览器的Host:标头,这是代理几乎肯定用于其路由决策的内容。

如果您需要b.example.com的请求,则必须在代理中配置,而不仅仅在DNS中配置。