如何配置NGINX SSL(SNI)

xyb*_*rek 5 ssl nginx

我有这个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
Run Code Online (Sandbox Code Playgroud)

的NGINX服务器与具有类似的图案主机接收的请求*.shared-hosting.xyz,例如website1.shared-hosting.xyz,website2.shared-hosting.xyz 并且还与具有不同结构域样可变主机my-custom-domain-demo.xyzanother-custom-domain-demo.xyz

现在问题是较低的serverNGINX配置会覆盖上层配置.拥有它,上层不再工作,并且访问*.shared-hosting.xyz返回证书错误,浏览器告诉证书仅用于my-custom-domain-demo.xyz.

可以做些什么,以便较低的NGINX配置触发*.shared-hosting.xyz域,并且当主机处于模式时,其他所有其他服务器配置都不会触发*.shared-hosting.xyz

Ric*_*ith 6

server_name _;是无关紧要的(在现代版本则不需要nginx)。如果 aserver与一个匹配listen并且server_name无法找到,nginx将使用默认 server

如果指令没有default_server后缀listennginx将使用第一个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;
    ...
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此文档