客户是阿里云4核8G5M的云服务器,用宝塔面板搭建的nginx1.16+php7.1+mysql5.6服务器环境,一共建了三个站点,不同的域名指向的同一个站点根目录,目的是为了给每个域名都配置SSL(用的阿里云免费SSL证书,不是泛域名证书,所以只能这种方法),用这种方法处理一直稳定可靠,昨日出现了问题。

SSL证书混乱问题呈现:


假设指向同一站点根目录的三个站点的域名分别为www.domain111.com、www.domain222.com、www.domain333.com,分别配置了各自的SSL证书,并且确保SSL证书完全正确没有问题。访问www.domain111.com和www.domain222.com域名时没有问题,但访问www.domain333.com时提示证书无效,经过查看得知使用的是www.domain111.com的证书,所以无效了。图示如下:



SSL证书混乱原因分析


通过宝塔面板重启nginx1.16,会发现报错:


nginx: [warn] conflicting server name “domain.com” on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name “www.domain.com” on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name “domain.com” on 0.0.0.0:443, ignored
nginx: [warn] conflicting server name “www.domain.com” on 0.0.0.0:443, ignored



通过ssh连接服务器,结束nginx进程,然后用命令来尝试重启nginx


结束nginx进程命令:pkill -9 nginx
重启nginx命令:/etc/init.d/nginx start

通过上述方法重启,仍然提示如下错误,重启不成功。

nginx: [warn] conflicting server name “domain.com” on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name “www.domain.com” on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name “domain.com” on 0.0.0.0:443, ignored
nginx: [warn] conflicting server name “www.domain.com” on 0.0.0.0:443, ignored



SSL证书混乱解决方法


修改网站配置文件可以解决这种问题,点击宝塔面板左侧导航【文件管理】,从磁盘根目录查找,依次找到路径/www/server/panel/vhost/nginx,查看conf文件配置并按照图示修改。