从此

🏠 » 📄文章 » 内容

 欢迎来访!

Nginx 状态码 444 + 497 屏蔽 DDOS 响应 提升 HTTPS/TLS/SSL Web服务安全性

🕗2025-09-22👁️1

网络安全防护至关的重要,特别是在对外提供 HTTPS 服务时。本文介绍如何使用 Nginx 的状态码 444 来防止未授权访问和潜在安全问题。 

444 是 Nginx 特有的状态码,用于强制关闭客户端连接,不返回任何响应,有效拒绝了不合法请求,避免信息泄露。在提供 HTTPS 私密服务时,非法用户可能尝试探测端口,这不仅浪费资源,还可能带来安全风险。通过 Nginx 配置状态码 444,可以隐藏服务存在,保护隐私。
 
下面是使用状态码 444 保护 HTTPS 服务的基本 Nginx 配置:

server {
    listen 443 ssl default_server;
    server_name _;
 
    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;
 
    location / {
        return 444;
    }
 
    error_page 497 = @close;
    location @close {
        return 444;
    }
}

其中

  • listen 443 ssl;:监听 443 端口,启用 SSL。
  • location / { return 444; }:根路径请求直接返回 444,拒绝访问。
  • error_page 497 = @close;:HTTP 访问 HTTPS 端口时重定向到 @close。
  • location @close { return 444; }:497 错误时返回 444,关闭连接。

使用 Nginx 状态码 444 是保护 HTTPS 服务的方法,有以下好处:
 
1. 隐蔽性:状态码 444 使非法用户无法探测服务,减少自动扫描和攻击风险。
2. 资源节约:拒绝不必要请求,避免性能下降。
3. 安全性提升:限制访问,只允许授权用户连接,降低安全威胁。
 
这种方法可以隐藏服务存在,节省资源,增强安全性。

 

业务现象

有几个域名都是解析到同一个服务器,同时访问都是同一个nginx,但是一个就比较正常,另外一个直接看不到http 状态信息(通过浏览器),刚开始以为是解析配置的有问题,通过链路的分析发现应该是同一个nginx,那就比较怪了,正常情况下应用是至少能看到nginx 返回的一些信息的,然后就顺着产品使用nginx 查看配置,之后发现了一个比较有意思的http 444 状态码的使用

  • 一段参考配置
location / {
        if ($bad_bot) {
            return 444;
        }
        # normal processing…
    }

在参考相关资料之后,发现通过浏览器打开的效果与实际配置的nginx 444 是对应上了

nginx http 444 的处理

当遇到return 444,内部会进行日志记录,然后直接关闭连接,不会发送http 状态行,头以及body,客户端的现象是Empty reply from server

nginx http 444 的一些使用场景

  • 拦截无效或者恶意请求
  • 防爬虫

说明

使用好nginx 的http 444 还是比较有用的,可以减少一些攻击的持续探测,同时还能减少带宽,但是对于日常拍错也是会有一些影响的,所以注意查看配置。

 

Nginx 444 状态码

444 状态码是 nginx 自己定义的,不在标准HTTP状态码范围内。它的核心含义是:

Nginx 服务器主动关闭连接,不向客户端发送任何响应。

相比返回一个完整的错误页面(如 403 或 404, 502),直接关闭连接消耗的服务器资源(CPU、内存、带宽)更少,尤其是在面对大量无效或恶意请求时。甚好,非常符合我的需求。

Nginx 配置示例

# 在 server 或 http 块中
if ($http_user_agent ~* (BadBot|Scanner|Spammer)) {
    return 444;
}

reload Nginx 配置

确认配置文件格式正确,并 reload Nginx 配置,使 444 状态码的配置生效。

sudo nginx -t
sudo nginx -s reload

😮‍💨,感觉搭建服务器时不能有精神洁癖,被攻击就被攻击吧,只要服务器负载没有问题,你刷你的。 我也不咋纠结了。