今天配置nginx,本地host测试。
192.168.1.8 www.shuanghei.com
192.168.1.8 test2.shuanghei.com
当打开浏览器test2.shuanghei.com时候,竟然显示了www.shuanghei.com的内容,我ngxin没有做server_name映射啊,这也就意味着,任何一个人只要把域名A记录指向我的IP,都能通过这个域名跳转到我服务器上的某个网站,这实在太不安全了,也太奇怪了。
查了很多资料,原来当nginx发现没有一个server_name符合规则的话,会默认指向第一个server_name。
如果你手动指定了default_server, 那么当没有匹配的时候,跳转到这个server_name上面,可以如下配置
server {
listen80 default_server;
server_name _;
return404; }
当然,这里只是解决了80端口的。现在网站都是https了,所以443端口也非常重要,同样的。443端口需要添加如下配置。
server { listen 443 ssl http2 default_server; server_name _; ssl_certificate /usr/ssl/*****/cert.crt; ssl_certificate_key /usr/ssl/*****/private.key;
return 404; }
记住ssl_certificate和ssl_certificate后面的地址,必须是你服务器上任何一个ssl地址,别说你网站没有ssl证书,那还就不要设置这条server了,这条server是配合https使用的,既然没证书,就用不到https了。