HTTP响应码本身不能屏蔽请求,真正起作用的是Nginx的拦截逻辑(如return、deny、if判断等),响应码仅为拦截后返回的结果;常用方式包括用return快速返回403/405/444,deny限制IP或路径,444用于彻底断连,且需注意各状态码的语义与安全影响。

直接用 HTTP 响应码本身无法“屏蔽”请求,它只是对已到达的请求做出响应。真正起屏蔽作用的是 Nginx 的拦截逻辑(如 return、deny、if 判断等),而响应码是拦截后返回给客户端的结果。常见做法是:匹配异常请求特征 → 立即终止处理 → 返回特定状态码(如 403、405、444)。
用 return 指令快速返回指定响应码
这是最常用、最轻量的方式,适用于路径、参数、请求头等简单匹配场景:
-
屏蔽特定路径:比如禁止所有
/news/开头的访问,直接返回 403
return 403;
}
- 屏蔽非法请求方法:例如拒绝 PUT、DELETE 等非标准方法
return 405;
}
- 屏蔽空 Referer 或恶意 Referer:防止盗链或恶意跳转
return 403;
}
if ($http_referer ~* "xxx\.com|spam-site\.org") {
return 403;
}
用 deny 配合状态码控制权限
deny 指令本身不指定响应码,但默认返回 403;配合 allow 可做白名单控制:
- 在 location 块中限制访问,适合静态资源保护
deny all;
}
- 按 IP 段拒绝,常用于封禁扫描器或攻击源
deny 192.168.100.55;
deny 203.123.0.0/16;
allow 10.0.0.0/8;
allow 127.0.0.1;
deny all;
}
用 444 状态码彻底关闭连接
444 是 Nginx 特有状态码,不发送任何响应体,直接断开 TCP 连接。比 403 更隐蔽,适合对抗自动化探测或高频无效请求:
- 屏蔽 User-Agent 为爬虫或扫描工具的请求
return 444;
}
- 屏蔽无 Host 头或 Host 不合法的请求(防恶意代理)
return 444;
}
注意响应码背后的语义与安全影响
不同响应码传递不同信号,选错可能暴露信息或被滥用:
- 403 Forbidden:明确表示“你有权访问但当前被拒”,适合权限类拦截
- 404 Not Found:可伪装成资源不存在,降低攻击者探测兴趣(慎用,可能影响正常 SEO)
-
405 Method Not Allowed:仅用于禁止特定 HTTP 方法,会附带
Allow响应头,需搭配limit_except更规范 - 444 No Response:无响应内容,最隐蔽,但部分监控工具可能误报为超时


















