防止通过服务器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
预期结果:正常返回网站内容。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗