多个域的 Nginx 重定向问题

Nginx Redirection Issues with multiple domains

所以我有两个域:

example.com
example.ca

这是一个 docker 容器 运行 nginx,我正在尝试完成 http 到 https 重定向和 www 到非 www 重定向。

主机上的

Docker 绑定到端口 80 和 443。要清楚,进出服务器的流量没有问题。

问题是 www 重定向似乎被忽略了。

当用户转到 http://www.example.com I expect them to be redirected to https://example.com

他们实际上被重定向到 https://www.example.com

因此 https 重定向在 100% 的时间内都有效,但出于某种原因,nginx 无法在没有 www

的情况下执行重定向

值得注意的是,我们正在使用 CloudFlare 来替换我们的自签名证书。那么问题可能是 CloudFlare 造成的吗?

这是我的重定向。

    server {
        listen 8080;
        listen 8443;
        server_name www.example.com;
        return 301 https://$host$request_uri?$args;
    }

    server {
        listen 8080;
        listen 8443;
        server_name www.example.ca;
        return 301 https://$host$request_uri?$args;
    }

#   Force http to https
    server {
        listen 8080;
        server_name example.com;
        return 301 https://$host$request_uri?$args;
    }
    
    server {
        listen 8080;
        server_name example.ca;
        return 301 https://$host$request_uri?$args;
    }

您可以重定向用户 www.example.com to https://example.com 使用来自 cloudflare 的页面规则。 这是一个例子:

你也可以尝试使用 nginx 配置 尝试用您的域名替换 $host 这样您就可以

 server {
        listen 8080;
        server_name www.example.com;
        return 301 https://example.com$request_uri?$args;
    }

也许这样就可以了

所以我能够证明这确实有效。

事实证明我们的部署中存在错误,导致无法加载更新的 Nginx 文件。

修复后,这会按预期运行。