有两个服务器块。
nginx.conf http块中的default_server块:
服务器{
服务器名称 _;
听80 default_server;
听[::]:80 default_server ipv6only = on;
listen 443 default_server;
返回404;
}
include / etc / nginx / sites-enabled / *;
sites-enabled网站的工作域/网站块: 服务器{
听80;
听443;
server_name example.com;
返回301 https://www.$server_name$request_uri;
}
服务器{
听80;
听443 ssl;
root /var/www/example.com/htdocs/;
index index.html index.htm;
server_name www.example.com;
}
(我有这个设置redirect所有非www到www和所有http到https)
我有一个非www和www我的域的证书。 Nginx出于某种原因正在调用任何子域名,而不是给默认的网站无法find/ ERR_CONNECTION_RESET/错误。
例如,如果我去https://asdf.example.com/ Nginx调用它,浏览器告诉你它是不安全的SSL证书,那么你无论如何接受它,并得到一个404页面。
如何跳转到404页面跳过无效的证书消息,或者如何直接跳转到“页面未find”而不是404? 例如像去https://asdf.serverfault.com它不给404,它给出了一个ERR_CONNECTION_RESET/ 。 我想为我的服务器上的所有不存在的子域和域。
更新:难道是我所有的ssl_certificate行被添加到主http块吗? 如果是这样的话,仍然不能解决调用ERR_CONNECTION_RESET而不是像在6.上给出的例子。
如果您直接打开https://asdf.example.com ,则浏览器将asdf.example.comparsing为IP地址,然后使用HTTPS协议连接到该地址。 如果服务器(使用获取的IP)在443端口上侦听,并且没有为该域返回证书,或者在浏览器结束请求之前(例如,显示404错误),浏览器将会提示不安全的协议。
https://asdf.serverfault.com提供连接错误,因为这个子域没有注册,它没有IP地址。 这就是为什么你看到这个错误。 如果你想确保asdf.example.com返回一个连接错误而不是ssl警告,那么确保这个子域没有被注册, example.com没有通配符(*)logging。