赞
踩
Nginx在访问未配置SSL站点的时候会先访问默认配置过SSL的站点。距离A站点配置了SSL,B站点未配置,此时访问B站点的HTTPS则会显示A站点的内容,对于这个问题,官方的说法是:【在未指定SSL默认站点时,未开启SSL的站点使用HTTPS会直接访问到已开启SSL的站点】。但是即使设置了默认站点,还是存在这个问题。
首先了解nginx的查找规则,第一次查找配置文件里有无匹配的域名,如未找到,则查找default_server,如default_server未设置,则默认匹配配置文件排序后的第一个。所以根据规则,我们可以为443端口设置一个无效的default_server来解决这个问题。
以下是配置:
- server {
- listen 443 default_server;
- server_name _ ;
- ssl on;
- ssl_certificate xxx.crt;
- ssl_certificate_key xxx.key;
- return 444;
- }
注意:以下这两个参数必须填写,否则会导致所有SSL站点无法访问。证书可以为无效也可以为任意。(此处为坑)
ssl_certificate xxx.crt;
ssl_certificate_key xxx.key;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。