当使用通配符LetsEncrypt证书时,NGINX重定向子域以记录根域的根

时间:2018-06-15 15:59:49

标签: ssl nginx lets-encrypt

我有一个运行NGINX的EC2实例,我已经设置了一个覆盖子域的通配符LetsEncrypt证书。它实际上并不重定向域名(例如test.example.com不会重定向到example.com。它保持为test.example.com但显示example.com的文档根目录。

我非常确定我的DNS设置正确,因为当我删除301重定向并将根放在第一个服务器块中时,我的所有子域都正常工作,这让我相信SSL证书就是问题所在。 / p>

这是我的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 个答案:

答案 0 :(得分:2)

根据您的示例配置,您的SSL server_name阻止功能不会server,而是http server阻止。所以nginx知道你在谈论301重定向的内容,但是nginx会选择与端口/协议匹配的第一个服务器块(如果它与server_name不匹配