代码之家  ›  专栏  ›  技术社区  ›  bert

nginx使用通配符letsencrypt cert时将子域重定向到根域的文档根

  •  0
  • bert  · 技术社区  · 8 年前

    我有一个运行nginx的ec2实例,我设置了一个覆盖子域的通配符letsencrypt证书。它实际上并不重定向域名(例如 test.example.com 不重定向到 example.com . 它停留在 test.example.com网站 但是显示了 范例网站 )

    我很确定我的dns设置正确,因为当我删除301重定向并将根放在第一个服务器块中时,我的所有子域都正常工作,这使我相信ssl证书是问题所在。

    这是我的nginx配置:

    server {
      listen 80;
      listen [::]:80;
    
      server_name example.com;
    
      return 301 https://example.com;
    }
    
    server {
      listen 443 ssl;
    
      root /var/www/html/example.com;
    
      index index.html;
    
      ssl_certificate /home/webadmin/letsencrypt/config/live/example.com/fullchain.pem;
      ssl_certificate_key /home/webadmin/letsencrypt/config/live/example.com/privkey.pem;
    }
    
    server {
        listen 80;
        listen [::]:80;
    
        server_name test.example.com;
    
        return 301 https://test.example.com;
    }
    
    server {
        listen 443 ssl;
    
        root /var/www/html/test.example.com;
    
        ssl_certificate /home/webadmin/letsencrypt/config/live/example.com/fullchain.pem;
        ssl_certificate_key /home/webadmin/letsencrypt/config/live/example.com/privkey.pem;
    }
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Shawn C. php_node    8 年前

    根据您的示例配置,您没有 server_name 为您的SSL server 积木,但为你的 http 服务器 阻碍。所以 nginx 知道你在说什么301重定向但是 恩吉克斯 将选择与端口/协议匹配的第一个服务器块(如果它与 服务器名