【问题标题】:How to configure NGINX SSL (SNI)如何配置 NGINX SSL (SNI)
【发布时间】:2017-04-08 04:22:50
【问题描述】:

我的 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.xyzanother-custom-domain-demo.xyz 等。

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

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

【问题讨论】:

  • 我真的很困惑为什么在特定设置 server_name 时在 *.shared-hosting.xyz 主机上触发较低的服务器配置
  • 首选listen 443 ssl; 而不是手册推荐的ssl on;

标签: ssl nginx


【解决方案1】:

server_name _; 无关紧要(在现代版本的nginx 中不需要)。如果找不到具有匹配的listenserver_nameservernginx 将使用默认服务器

如果listen 指令没有default_server 后缀,nginx 将使用第一个带有匹配listenserver 块。

如果您的配置分布在多个文件中,则评估顺序会不明确,因此您需要明确标记默认服务器。

试试这个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 了解更多信息。

【讨论】:

    猜你喜欢
    • 2016-03-17
    • 2015-02-17
    • 1970-01-01
    • 2014-09-21
    • 2017-02-07
    • 2018-01-04
    • 1970-01-01
    • 2021-03-02
    • 2021-07-30
    相关资源
    最近更新 更多