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

Nginx UDP代理报no live upstreams错误排查求助

问题分析与解决方案

从错误日志bytes from/to upstream:0/0来看,核心问题是Nginx转发UDP数据包后,一直在等待上游Filebeat返回响应,但Filebeat作为日志采集端,接收UDP日志时不会返回任何响应,导致Nginx超时后终止会话,无法完成正常转发。结合你的配置,主要需要调整以下关键参数:

关键配置修改

  1. 移除proxy_responses 1
    该参数强制要求上游返回至少1个响应才会结束会话,但Filebeat接收UDP日志是单向数据传输,不会回包,必须删除该配置,让Nginx无需等待响应即可完成转发。

  2. 移除proxy_bind $remote_addr transparent
    透明代理配置对于本地上游(127.0.0.1)完全没必要,反而可能引发端口绑定或连接异常,直接删除即可。

  3. 优化UDP适配的超时与容错参数
    UDP是无连接协议,调整proxy_timeout为更合理的数值避免空闲会话被过早回收;同时添加上游节点异常自动切换的配置,提升转发稳定性。

修改后的完整Stream配置

stream {
   log_format proxy '$remote_addr [$time_local] '
                '$protocol $status $bytes_sent $bytes_received '
                '$session_time "$upstream_addr" '
                '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
   access_log /var/log/nginx/stream.log proxy;

   upstream stream_backend {
        zone backend 100k;
        server 127.0.0.1:2056;  
        server 127.0.0.1:2057;
        server 127.0.0.1:2058;
        server 127.0.0.1:2059;
        server 127.0.0.1:2060;
        server 127.0.0.1:2061;
        server 127.0.0.1:2062;
        server 127.0.0.1:2063;
        server 127.0.0.1:2064;
        server 127.0.0.1:2065;
   }
    
   server {
       listen 2055 udp;
        proxy_pass stream_backend;
        proxy_buffer_size 10000k;
        proxy_timeout 30s;
        # 上游节点异常时自动切换,适配UDP场景
        proxy_next_upstream on;
        proxy_next_upstream_timeout 1s;
        proxy_next_upstream_tries 3;
   }
}

验证步骤

  • 重启Nginx服务:systemctl restart nginx
  • 查看Nginx stream日志,确认upstream_bytes_sent不再为0
  • 测试数据包转发速率,对比直连Filebeat的处理能力

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:50:37