我有这个NGINXconfiguration如下:
# 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
等
现在问题是较低的server
NGINXconfiguration覆盖上面的configuration。 有了它,上层不再工作,并访问*.shared-hosting.xyz
返回证书错误,并且浏览器告诉证书仅适用于my-custom-domain-demo.xyz
。
有什么可以做到这一点,使下面的NGINXconfiguration触发*.shared-hosting.xyz
域和每个其他额外的服务器configuration将不会触发时,主机是*.shared-hosting.xyz
模式?
server_name _;
是不相关的(在现代版本的nginx
并不需要)。 如果找不到匹配listen
和server_name
, nginx
将使用默认服务器 。
如果没有listen
指令的default_server
后缀, nginx
将使用第一个匹配listen
server
块。
如果您的配置分布在多个文件中,那么评估顺序将不明确,因此您需要明确标记默认服务器。
试试这个jelastic
服务器块:
server { listen 443 ssl default_server; ssl_certificate /var/lib/jelastic/SSL/jelastic.chain; ssl_certificate_key /var/lib/jelastic/SSL/jelastic.key; ... }
请参阅此文档了解更多