同一台服务器Nginx防止未配置SSL证书的站点通过https访问跳转到配置了SSL(https)证书的站点
服务器:CentOS
环境:Nginx+MySQL+PHP
之前在这台服务器上配置了多个vhost站点,其中有一个还配好了SSL证书(https访问),其他站点都没配置。今天有个同事发现,当通过https访问其中一个未配置ssl证书的网站时,浏览器(谷歌、火狐都会)会提示证书风险,选择继续访问后,内容却是配置了ssl证书的那个站点。
后来查询得知,通过https协议访问未配置ssl证书的站点时,默认会跳转到一个(如果配置了的话)https站点,要禁止这种跳转,需要配置一个默认ssl(无效的也可以)server,具体如下:
server {
listen 443 default_server;
server_name _ ;
ssl on;
ssl_certificate crt/1_xxxx.com_bundle.crt; # 这里可以是无效的证书
ssl_certificate_key crt/2_xxxx.com.key; # 这里可以是无效的证书
return 301 http://$host$request_uri; # 跳转到http协议访问
}
最后一句(return
)强制把未配置ssl证书的https访问都跳转到http协议上,问题解决。
这是目前得到的解决方案,如果还有更好的,欢迎大家指出!