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

当STREAM上游主机不可用时,如何避免Nginx整体崩溃?

解决Nginx STREAM后端不可用导致整体崩溃的方案

修改后的配置

直接替换原有STREAM服务配置为以下内容即可:

server {
    listen 0.0.0.0:55;
    listen [::]:55;

    # 用变量存储后端地址,让Nginx仅在建立连接时动态解析域名,避免启动阶段依赖后端可用性
    set $backend_host hostname:22;
    proxy_pass $backend_host;

    # 缩短连接超时时间,避免因后端不可用导致连接长时间挂起
    proxy_connect_timeout 5s;
    proxy_timeout 10s;

    # 后端连接失败时直接丢弃请求,无需尝试重试(单后端场景下重试无意义)
    proxy_next_upstream off;
}

配置逻辑说明

  • 变量绕过启动时解析:Nginx默认会在启动阶段解析proxy_pass中的静态域名,一旦域名解析失败或后端不可达,整个服务会启动失败。改用变量传递后端地址后,Nginx只会在有实际连接请求时才去解析域名,启动阶段不再受后端状态影响,其他服务可正常运行。
  • 超时限制减少资源占用:短超时设置能快速终止与不可用后端的连接尝试,避免无效连接占用服务器资源。
  • 关闭重试简化流程:单后端场景下开启重试只会增加无效操作,直接关闭后,后端不可用时会直接丢弃当前连接,不会影响其他服务的正常运行。

可选优化(针对DNS不稳定场景)

如果你的环境中DNS解析存在延迟或不稳定问题,可以在stream全局块中指定可靠的DNS服务器,提升域名解析的稳定性:

stream {
    # 配置公共DNS服务器,每30秒刷新一次解析缓存
    resolver 8.8.8.8 1.1.1.1 valid=30s;

    server {
        listen 0.0.0.0:55;
        listen [::]:55;

        set $backend_host hostname:22;
        proxy_pass $backend_host;

        proxy_connect_timeout 5s;
        proxy_timeout 10s;
        proxy_next_upstream off;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 15:52:13