防止通过服务器IP地址获得你的网站域名

通过配置Nginx的默认服务器块(default server)来拦截非法请求:


1. 配置默认服务器块

在Nginx的配置中,为HTTP(80端口)和HTTPS(443端口)设置默认的服务器块,所有通过IP直接访问的请求将被拦截。

HTTP(80端口)配置

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;  # 匹配任意未定义的Host头
    return 444;     # 直接关闭连接,不返回任何内容
}

生成自签名证书

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048  -keyout  ./dummy.key   -out   ./dummy.crt

HTTPS(443端口)配置

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    server_name _;
    ssl_certificate /path/to/dummy.crt;    # 刚才生成的自签名证书
    ssl_certificate_key /path/to/dummy.key;
    return 444;
}

注意:HTTPS的默认服务器块需要证书,使用自签名证书生成


2. 确保其他服务器块正确配置

确保你的网站域名配置的服务器块 不包含 default_server 参数,且明确指定域名:

server {
    listen 80;
    server_name yourdomain.com;  # 替换为你的域名
    # 正常配置(如反向代理、静态文件处理等)
}

3. 隐藏Nginx版本和服务器信息

nginx.conf 中关闭服务器标记,防止泄露Nginx版本:

http {
    server_tokens off;  # 隐藏Nginx版本
    # 其他配置...
}

4. 验证并重载配置

nginx -t         # 检查配置语法
nginx -s reload  # 重载配置

验证方法

  • 通过IP访问测试

    curl -I http://<你的服务器IP>
    curl -Ik https://<你的服务器IP>
    

    预期结果:直接断开连接(无响应)。

  • 通过域名访问测试

    curl -I http://yourdomain.com
    curl -Ik https://yourdomain.com
    

    预期结果:正常返回网站内容。

posted @   spacelit  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示