为什么 Nginx 在不存在的子域中调用无效证书只是为了重定向到 404?

为什么 Nginx 在不存在的子域中调用无效证书只是为了重定向到 404?
  1. 有两个服务器块。

  2. default_server块内httpnginx.conf

服务器 {
   服务器名称 _;
   听 80 默认服务器;
   听[::]:80 default_server ipv6only=on;
   听443默认服务器;
   返回 404;
}
包括/etc/nginx/sites-enabled/*;
  1. 内部有一个有效的域名/网站区块sites-enabled
服务器 {
  听80;
  听 443;
  服务器名称 example.com;
  返回 301 https://www.$server_name$request_uri;
}

服务器 {
  听80;
  听443 ssl;
  根/var/www/example.com/htdocs/;
  索引 index.html index.htm;

  服务器名称www.example.com;
}

(我有此设置将所有非 www 重定向到 www 并将所有 http 重定向到 https)

  1. 我的域名有非 www 和 www 证书。Nginx 出于某种原因调用任何子域名,而不是给出默认网站无法找到/ERR_CONNECTION_RESET/错误。

  2. 例如,如果我去https://asdf.example.com/Nginx 调用它并且浏览器告诉您它是不安全的 SSL 证书,那么您无论如何都会接受它并得到 404 页面。

  3. 我如何跳过无效证书消息跳转到 404 页面,或者如何直接跳转到“页面未找到”而不是 404?例如,转到https://asdf.serverfault.com它不会给出 404,而是给出ERR_CONNECTION_RESET/。我希望我的服务器上所有不存在的子域和域都这样做。

更新:是不是我的所有ssl_certificate行也都添加到了主 http 块中?如果是这样,仍然无法解决调用ERR_CONNECTION_RESET而不是 404 的问题,就像给出的示例一样6.

答案1

如果你打开https://asdf.example.com然后浏览器将直接解析asdf.example.comIP 地址,然后使用HTTPS协议连接到该地址。如果服务器(使用检索到的 IP)正在侦听443端口,并且没有返回此域的证书,或者返回无效证书,则浏览器将在完成请求之前警告您协议不安全(例如显示404错误)。

https://asdf.serverfault.com给出连接错误,因为此子域未注册,没有 IP 地址。这就是您看到此错误的原因。如果您想确保asdf.example.com返回连接错误而不是 SSL 警告,那么请确保此子域未注册并且没有通配符 (*) 记录example.com

相关内容