nginx ssl代理仅适用于一个主机名

nginx ssl代理仅适用于一个主机名

我希望 nginx 充当 SSL 代理,但对于主机:“ssl.example.com”

同时我希望 nginx 为主机提供“nginx 正常”网站服务:“ssl-check.example.com”(这只是例子,请不要在这里建议任何监控工具)

对于指向我的 IP 的其他主机,我想提供 404 或其他什么。-
我不关心证书不匹配 - 所以 SNI 不是我想要的。-
我不想使用描述为陷阱解决方案并使用类似的东西

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

所有这些都在单个 IP 上。

我有有效的 SSL

server {

使用 server_namessl.example.com- 按我想要的方式工作。

另一个 ssl

server {

使用 server_namessl_check.example.com- 显示“nginx 正常”

最后一台服务器(也是 ssl)没有 server_name(或以“_”作为名称),应该提供 404 服务,但它不起作用......

解决了
我使用该解决方案的配置现在看起来(并且工作)如下:

  1. 服务器使用“listen 443 ssl;”提供代理
  2. 服务器显示“listen 443 ssl;”服务“nginx is ok”
  3. 服务器使用“listen 443 ssl default_server;”和“location / return 404”

如果此配置有任何危险 - 请毫不犹豫地让我蒙羞。谢谢

答案1

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

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

相关内容