nginx只有一个主机名的ssl代理

我想让nginx作为一个ssl代理,但对于主机: “ssl.example.com”

同时我想让nginx为主机“ssl-check.example.com”服务“nginx is ok”网站(这只是个例子,请不要在这里提供任何监控工具)

为其他主机指向我的IP我想服务404或任何其他。
– 我不在乎证书不匹配 – 所以SNI不是我想要的。
– 我不想使用描述为陷阱的解决scheme,并使用类似的东西

if ($host != $server_name) { root /var/www/errors/404 

所有这些在单个IP上。

我有工作的SSL

 server { 

与server_name ssl.example.com – 工作,我想要的。

另一个ssl

 server { 

用server_name ssl_check.example.com – 显示“nginx是好的”

和最后一个服务器(也是SSL)没有server_name(或与“_”作为名称)应该服务404,但它不工作…

解决了
我的configuration使用该解决scheme看起来(和工程),如:

  1. 有“listen 443 ssl”的服务器 服务代理
  2. 有“listen 443 ssl”的服务器 服务“nginx是好的”
  3. 服务器“listen 443 ssl default_server;” 和“位置/返回404”

如果这个configuration可以以任何方式危险 – 不要犹豫,让我感到羞耻。 Thans

您可以使用listen指令的default_server选项指定默认的虚拟主机。 如果你不设置这个nginx将select第一个匹配listen指令的server块。

 server { listen 443 ssl default_server; root /var/www/errors/404; }