Nginx禁止未绑定域名和IP访问HTTP/HTTPS

Nginx安装配置完毕后,通过IP是可以直接访问服务器的网站的,就算server配置文件都指定了域名,IP依旧可以访问最先读取到的server配置站点,并且其他未绑定的域名解析到这台服务器,是可以访问最先读取到的server配置站点。
用以下方法可以解决这个问题:

解决办法

1、新建一个server

配置文件如下:

server {

    listen 80 default_server;    #80端口默认站点

    ###注意:如果不配置HTTPS,那么访问 https://ip 依旧能访问到最先读取到的含有HTTPS配置的server站点。
    listen 443 ssl http2 default_server;    #443端口默认站点

    ###注意:配置SSL不配置证书会出现协议错误,必须有。可以是自签证书。
    ssl_certificate /usr/local/nginx/conf/ssl/example.cer;

    ssl_certificate_key /usr/local/nginx/conf/ssl/example.key;

    server_name _;    # _ 匹配无效的主机名称,这样就不会影响正在工作的站点啦

    return 444;        #返回的状态码,也可以为404,403等

}

这里的 defalut_server 是指Nginx通过HTTP请求中的Host值来找到对应的虚拟主机配置 ,当找不到主机名会送到指定的 default_server 的节点来处理。在通过IP访问的时候,如果没有配置 default_server ,会访问到最先匹配到的server配置站点。

2、重启Nginx服务

平滑重启Nginx服务

service nginx reload

发表新评论