nginx下未设置的server_name导致80和443乱串的问题

 0 0条评论

今天配置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了。

本文作者:双黑

版权声明:本站文章欢迎链接分享,禁止全文转载!

游客