为防止IP被扫描到,通过IP访问反查源站,需要配置HTTP服务器禁止直接IP访问
核心思路是创建一个默认的 Server 块(default_server),让它优先匹配所有未指定域名的请求(包括 IP 访问),然后返回拒绝响应或重定向。
以下是几种常见的配置方案,推荐程度由高到低:
方案一:返回 444 状态码
444 是 Nginx 特有的非标准状态码,表示 "No Response"。Nginx 会直接关闭连接,不返回任何 HTTP 头或内容。这对扫描器和恶意爬虫最友好,能节省服务器资源。
server {
listen 80 default_server;
listen [::]:80 default_server;
# 如果有 HTTPS,也需要加上
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
# SSL 证书可以随便填一个自签名的,或者复用现有证书
# 因为 444 会在握手后/请求阶段直接断开,但 SSL 握手需要证书
ssl_certificate /etc/nginx/ssl/default.crt;
ssl_certificate_key /etc/nginx/ssl/default.key;
server_name _; # 匹配所有未定义的域名/IP
return 444; # 直接关闭连接
}方案二:返回 403 Forbidden
如果你希望给用户一个明确的"禁止访问"提示:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 403;
}方案三:301 重定向到主域名
如果希望将 IP 访问的流量引导到正确域名:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://www.yourdomain.com$request_uri;
}
评论栏