【问题标题】:Nginx Redirection Issues with multiple domains多个域的 Nginx 重定向问题
【发布时间】:2021-05-01 13:33:48
【问题描述】:

所以我有两个域:

example.com
example.ca

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

主机上的 Docker 绑定到端口 80 和 443。要明确的是,进出服务器的流量正常工作。

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

当用户转到http://www.example.com 时,我希望他们被重定向到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;
    }

【问题讨论】:

    标签: docker nginx docker-compose nginx-config


    【解决方案1】:

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

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

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

    也许这样可以解决问题

    【讨论】:

    • 太棒了,我什至没有想过在 cloudflare 中这样做。它确实有效。我仍然想知道为什么我的 nginx 配置不起作用。如果几天后我没有得到答案,我会接受你的答案。谢谢!
    • 用你可以尝试的 nginx 配置部分更新了答案
    【解决方案2】:

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

    原来我们的部署中有一个错误导致更新的 Nginx 文件无法加载。

    一旦修复,它就会按预期运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-07
      • 2013-03-13
      • 1970-01-01
      • 2020-10-21
      • 2013-03-16
      • 2018-03-29
      • 1970-01-01
      相关资源
      最近更新 更多