有两个服务器块。
default_server
块内http
块nginx.conf
:
服务器 { 服务器名称 _; 听 80 默认服务器; 听[::]:80 default_server ipv6only=on; 听443默认服务器; 返回 404; } 包括/etc/nginx/sites-enabled/*;
- 内部有一个有效的域名/网站区块
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)
我的域名有非 www 和 www 证书。Nginx 出于某种原因调用任何子域名,而不是给出默认网站无法找到/
ERR_CONNECTION_RESET/
错误。例如,如果我去
https://asdf.example.com/
Nginx 调用它并且浏览器告诉您它是不安全的 SSL 证书,那么您无论如何都会接受它并得到 404 页面。我如何跳过无效证书消息跳转到 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.com
IP 地址,然后使用HTTPS
协议连接到该地址。如果服务器(使用检索到的 IP)正在侦听443
端口,并且没有返回此域的证书,或者返回无效证书,则浏览器将在完成请求之前警告您协议不安全(例如显示404
错误)。
https://asdf.serverfault.com给出连接错误,因为此子域未注册,没有 IP 地址。这就是您看到此错误的原因。如果您想确保asdf.example.com
返回连接错误而不是 SSL 警告,那么请确保此子域未注册并且没有通配符 (*) 记录example.com
。