设置
我在 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;
}
}