【问题标题】:Nginx multiple domains and http to https redirection on DDEVNginx 多个域和 DDEV 上的 http 到 https 重定向
【发布时间】:2022-08-21 22:19:50
【问题描述】:

我正在将一些生产中的小型网站移动到 DDEV,其中一些具有多个域,并通过 301 重定向到主 HTTPS 站点。

当我使用 .conf 文件管理应以这种方式重定向到主站点的域时,此配置与“自然” Nginx 配合良好:

server {
    listen 80;
    server_name     .domain1.com
            .domain2.com
            .domain3.com
    ;
    return 301 https://www.maindomain.com;
}

我尝试创建一个新的 domain.conf 文件并将其添加到 .ddev/nginx_full 目录中以在重新启动过程中加载,但 Nginx 似乎无法识别此类文件。

在主 \"natural\" Nginx 配置文件中,我让这个服务器将所有来自 HTTP 的请求重定向到 HTTPS:

server {
        listen 80;
        access_log off;
        error_log off;
        server_name maindomain.com www.maindomain.com;
        return 301 https://www.$host$request_uri;
}

我试图在 .ddev/nginx_full/nginx-site.conf 文件中添加这些配置,但服务器开始变得疯狂,有时会进行无限重定向,有时甚至无法识别域。

在 config.yaml 文件中,我有:

additional_fqdns:
- domain1.com
- domain2.com
- domain3.com
- maindomain.com
- www.maindomain.com
use_dns_when_possible: false

我确信这是处理这种情况的“正确方法”,但是查看文档,我没有找到并回答这个问题。在这种情况下,我问这里是否有人对此有所了解。

非常感谢

  • 请记住,.ddev/nginx_full/<something>.conf 是 nginx 配置网络容器,这不是主要的终止点(即 ddev-router)。我建议您首先使用虚拟 fqdns 在本地处理此问题,这可能就是您正在做的事情。如果您将 nginx 配置放入 gist.github.com 上的 gist 中,人们会更容易帮助您。

标签: nginx ddev


【解决方案1】:

ddev-router 充当反向代理,终止 SSL/443 并将端口 80 上的请求传递到 Web 容器。

您会看到无限重定向,因为它始终在端口 80 上看到请求。

【讨论】:

    【解决方案2】:

    我认为这对你有用。

    使用以下内容添加文件 .ddev/nginx/redirect.conf:

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

    这使用DDEV nginx snippet,也可以使用完整的 nginx 配置来完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-26
      • 1970-01-01
      • 2017-05-25
      • 1970-01-01
      • 2018-04-27
      • 2014-05-08
      • 2021-07-30
      • 1970-01-01
      相关资源
      最近更新 更多