AWS:ELB:Route 53:Nginx:裸域重定向

AWS : ELB : Route 53 : Nginx : naked domain redirect

设置
我有两个 rails 应用程序实例在 Opsworks 层中运行。 我正在使用 Route 53 和 ELB 将流量路由到我的层。

目标
将裸域流量重定向到我的 www 域。 chicken.com -> www.chicken.com

我试过的
我改变了我的 nginx conf(在一个实例中)来解决这个问题。我添加了以下内容:

server {
 listen 80;
 server_name chicken.com;
 return 301 $scheme://www.chicken.com$request_uri;
}
... rest of config here

结果
实例不再可以通过其 IP 访问。

ELB 将我更改的实例标记为 "Out of Service",因为它无法再通过 IP 访问(健康检查失败)。

问题
我怎样才能将裸域路由到 www 域,同时让我的 ELB 健康检查满意?

ELB 运行状况检查需要 200 响应。您是在检查 chicken.com 而不是 www.chicken.com 吗?重定向页面不足以进行健康检查。

要同时进行重定向并为 ELB 检查(来自内部 IP)提供 200 响应,请使用以下配置:

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

注意 default_server 选项。如果未设置,则第一个 server 定义为默认值。有关详细信息,请参阅 nginx docs