我有这个Nginx配置如下:
# jelastic is a wildcard certificate for *.shared-hosting.xyz
server {
listen 443;
server_name _;
ssl on;
ssl_certificate /var/lib/jelastic/SSL/jelastic.chain;
ssl_certificate_key /var/lib/jelastic/SSL/jelastic.key;
}
# fullchain2 is a certificate for custom domain
server {
listen 443 ssl;
server_name my-custom-domain-demo.xyz www.my-custom-domain-demo.com;
ssl_certificate /var/lib/Nginx/ssl/my-custom-domain-demo.xyz/fullchain2.pem;
ssl_certificate_key /var/lib/Nginx/ssl/my-custom-domain-demo.xyz/privkey2.pem;
}
# additional configuration for other custom domains follows
Nginx服务器接收具有类似* .shared-hosting.xyz的模式的主机的请求,例如,website1.shared-hosting.xyz,website2.shared-hosting.xyz
以及具有不同域的变量主机,如my-custom-domain-demo.xyz或another-custom-domain-demo.xyz等.
现在的问题是较低的服务器Nginx配置会覆盖上层配置.有它,鞋面不再工作,
并访问* .shared-hosting.xyz返回证书错误,浏览器告诉证书仅适用于my-custom-domain-demo.xyz.
可以做些什么,以便较低的Nginx配置触发* .shared-hosting.xyz域,并且每个其他额外的服务器配置都不会触发
当主机采用* .shared-hosting.xyz模式时?
最佳答案
server_name _;是无关紧要的(在现代版本的Nginx中不是必需的).如果找不到具有匹配listen和server_name的服务器,Nginx将使用默认服务器.
在listen指令缺少default_server后缀的情况下,Nginx将使用匹配listen的第一个服务器块.
如果您的配置分布在多个文件中,则评估顺序将不明确,因此您需要明确标记默认服务器.
试试这个jelastic服务器块:
server {
listen 443 ssl default_server;
ssl_certificate /var/lib/jelastic/SSL/jelastic.chain;
ssl_certificate_key /var/lib/jelastic/SSL/jelastic.key;
...
}
有关更多信息,请参见this document