You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

当Node.js API宕机时能否配置Nginx停止对外响应请求?

Nginx 配置实现方案

可以通过配置Nginx内置模块实现该需求,核心逻辑是利用上游健康检查能力+Nginx特有的444状态码,在Node API不可用时直接关闭连接不返回响应,触发监控的超时/连接失败判定规则,具体配置步骤如下:

前置确认

你使用的Nginx需要自带ngx_http_proxy_module和ngx_http_upstream_module两个模块,绝大多数主流发行版预编译的Nginx默认都已内置这两个模块,无需额外安装。


具体配置

1. 配置上游服务与健康检查规则

在Nginx配置文件的http块中添加上游服务定义:

http {
    # 其他全局配置保留不变
    upstream node_api {
        # 替换为你实际Node API的监听地址和端口
        server 127.0.0.1:3000 max_fails=1 fail_timeout=3s;
        keepalive 64;
    }
}

参数说明:

  • max_fails=1:1次请求失败就标记该节点不可用
  • fail_timeout=3s:节点被标记为不可用后,3秒后会自动重试检测节点是否恢复,你可以根据自身需求调整这两个参数的数值

2. 配置站点代理与异常处理

在对应server块的location规则中添加异常处理逻辑:

server {
    listen 80;
    # 替换为你实际的API域名
    server_name api.yourdomain.com;

    location / {
        proxy_pass http://node_api;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # 定义哪些场景下认为上游请求失败,自动重试其他节点(单节点场景下也需要保留)
        proxy_next_upstream error timeout http_502 http_503 http_504;
        # 所有上游节点都不可用时,拦截502/503/504响应,返回444状态码
        # 444是Nginx特有的状态码,会直接关闭TCP连接,不返回任何响应内容给客户端
        error_page 502 503 504 =444 /dev/null;
    }
}

配置生效与验证

  1. 执行nginx -t检查配置语法是否正确,确认返回syntax is ok和test is successful后再进行下一步
  2. 执行nginx -s reload重载Nginx配置,使规则生效
  3. 测试效果:手动停止Node API服务,此时请求Nginx会直接断开连接,没有任何响应内容,监控工具会识别为请求失败;重启Node API后,等待fail_timeout设定的时长后,Nginx会自动恢复正常响应。

内容的提问来源于stack exchange,提问作者tontsa28

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:36:05