强制重定向到www时,gcp http-health-check失败。

时间:2019-12-02 17:16:32

标签: nginx google-cloud-platform google-compute-engine

我正在使用GCP,并且我想强制将我的所有网站流量从example.com重定向到www.example.com,所以我在Nginx配置中使用了一个简单的重定向,例如:

server {
    listen      80;
    server_name example.com;
    return      301         https://www.example.com$request_uri;
}
server {
    listen      80;
    server_name www.example.com;
    if ($http_x_forwarded_proto = "http") {
        return 301 https://$host$request_uri; #permanent;
    }
    #Other configurations
}

(此Nginx配置位于我的实例中,该实例位于负载均衡器的后端服务中,其中负载均衡器的前端具有ssl证书)

但是现在GCP的默认http-health-check无法正常工作,因为它正在等待200响应,而不是我正在响应的301

那么,如何使用http-health-check进行www.重定向?

1 个答案:

答案 0 :(得分:0)

我找到了它:),我将问题中此处提到的Nginx配置更改为以下内容:

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

    if ($http_x_forwarded_proto = "http") {
        return 301 https://$host$request_uri; #permanent;
    }

    # to force adding 'www.' without bothering GCP health checks which connects with direct IP
    if ($host = "example.com") {
        return 301 https://www.example.com$request_uri; #permanent;
    }

    #Other configurations
}

这里的诀窍是检查$host变量,而普通用户会键入example.com打开网站,而GCP健康检查将使用直接IP进行连接,因此他们不会看到301重定向?