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

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

设置
我在 Opsworks Layer 中运行两个 Rails 应用实例。我使用 Route 53 和 ELB 将流量路由到我的 Layer。

客观的
将裸域名流量重定向到我的 www 域名。chicken.com -> www.chicken.com

我尝试过
我修改了我的 nginx 配置(在一个实例上)来解决这个问题。我添加了以下内容:

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

结果
实例不再能通过其 IP 命中。

ELB 将我更改的实例标记为“停止服务”,因为它不再能通过 IP 访问(健康检查失败)。

问题
如何将裸域名路由到 www 域名,同时又保持我的 ELB 健康检查顺利进行?

答案1

您需要设置一些内容,使其在健康检查时返回 2xx,目前 301 让 ELB 认为它已停止服务,您可以设置类似以下内容的内容

server {
 listen 80;
 server_name chicken.com;

 location ^~ /health {
   proxy_pass http://my_proxy;
 }

 location / {
   return 301 $scheme://www.chicken.com$request_uri;
 }

}

server {
 listen 80;
 server_name www.chicken.com;

 location / {
   proxy_pass http://my_proxy;
 }
}

答案2

或者更简单的方法。

server {
 listen 80;
 server_name chicken.com;

 location /status {
        stub_status   on;
 }

 location / {
   return 301 $scheme://www.chicken.com$request_uri;
 }

}

相关内容