Nginx设置禁止使用IP直接访问网站

作者 胡萝虎 日期 2022-02-23
Nginx设置禁止使用IP直接访问网站

最近博主在后台看网站的统计数据时,发现有些访问是直接通过IP地址访问的,而不是博主网站的域名www.huluohu.com,考虑到现在大陆的网络管控越来越严,要是有人恶意把没备案的域名解析到博主的IP上可就麻烦大了。所以说干就干,看看如何设置Nginx,禁止通过IP直接访问网站。

一般来说,配置SSL证书的网站,使用IP访问时,浏览器都会先拦截提醒,只有用户主动信任证书并点击继续访问后,才能打开网站。但是对于网站站长来说还是存在一定风险性的,主要是以下2点:

  • 被没备案的域名恶意解析,存在被断网风险
  • 攻击者可以通过https://ip获取网站的证书信息及绑定的域名,存在潜在风险

IP直接访问网站

使用ip直接访问博主的网站时浏览器的提示

配置方法

不让用户直接通过ip访问网站也存在2种情况,即http和https,所以80和443端口都要考虑。

建议Nginx升级到1.19.4以上版本,低版本在配置443端口时会比较麻烦。

  1. 进入nginx目录

    cd your_nginx_conf_dir
  2. 使用vim打开nginx.conf配置文件

    vim ngnix.conf
  3. 在末尾加上以下配置,注意是添加

    server {
    listen 80 default;
    server_name _;
    return 403;
    }
    server {
    listen 443 default_server;
    server_name _;
    # 直接拒绝握手
    ssl_reject_handshake on;
    }
  4. 然后重新加载配置

    nginx -s reload

效果

现在重新用IP去访问网站,会直接到403页面

403

“扫一扫接着看”