我有这个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.xyzwebsite2.shared-hosting.xyz以及具有不同域(例如my-custom-domain-demo.xyzanother-custom-domain-demo.xyz等)的变量主机。

现在的问题是,较低的server NGINX配置将覆盖较高的配置。有了它,鞋帮不再工作了,
并访问*.shared-hosting.xyz会返回证书错误,并且浏览器告诉该证书仅适用于my-custom-domain-demo.xyz

这样做可以使较低的NGINX配置触发*.shared-hosting.xyz域,而其他所有其他服务器配置都不会触发
当主机处于*.shared-hosting.xyz模式时?

最佳答案

server_name _;是无关的(现代nginx不需要)。如果找不到具有匹配的serverlistenserver_name,则nginx将使用默认服务器。

在没有default_server指令的listen后缀的情况下,nginx将使用第一个server块和匹配的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

10-01 13:09
查看更多