事故背景
A项目组曾用旧域名 old-domain.com 提供服务,后转到新域名new-domain.com
旧域名客户已经保存,所以这时 old-domain.co 302到新域名。
B项目组需要调A项目组API,有个地方还在使用 old-domain.com 。但旧域名已经不再有HTTPS。
在一次nginx调整,增加一个域名配置a-domain.com时B项目组调用服务挂掉了。。
这是为啥呢?
疑点
old-domain.com虽然还解析到原来服务器,但已经不提供HTTPS服务。B项目组是如何可以通过HTTPS调通服务的呢? 现在增加a-domain.com为什么对旧域名造成影响? 真相 B项目组在调用旧域名时无视了SSL证书验证,所以即使没有也一样通过了。
那为什么没有HTTPS也能通过呢?
这就要提到nginx默认域名配置,对于未配置域名nginx默认解析到按字母表顺序第一个解析。
这也就解释了,为什么老域名还可以使用,因为nginx只有一个新域名的配置。误打误撞用上了。
新增的a-domain.conf优先级大于new-domain.com。所以就使用a-domin.conf配置了。
当然你也可以设置默认server,就能避免类似巧合发生了。
server {
listen 80 default_server;
server_name _;
return 403;
}