我有一个运行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;
}
答案 0 :(得分:2)
根据您的示例配置,您的SSL server_name
阻止功能不会server
,而是http
server
阻止。所以nginx
知道你在谈论301重定向的内容,但是nginx
会选择与端口/协议匹配的第一个服务器块(如果它与server_name
不匹配