如何使用 nginx 作为 UDP 负载均衡器处理来自后端服务器的返回流量

问题描述 投票:0回答:1

我将 Nginx 服务器设置为 UDP 负载均衡器。我有几个后端服务器正在处理 UDP 流量,对于后端服务器收到的每个数据包,它都会回复 ACK。当直接将请求发送到后端服务器时,我可以对其进行测试并获得响应,但是当通过 nginx 负载均衡器发送数据包时,我没有收到流量。

但是,我看到,响应是使用更高的临时端口发回的。

Nginx 可以做到这一点吗?我使用的是标准社区版本,但如果 Plus 版本支持此行为,这也是一个选项。我怎样才能实现这个目标?

配置非常简单,如下所示。 UDP 流量正在进行负载平衡。

stream {
  upstream udp {
    server xx.xx.xx.xx:nnnnn;
     server xx.xx.xx.xx:nnnnn;
  }

  server {
    listen nnnnn udp;
    proxy_pass udp;
    proxy_responses 0;
  }

}
nginx udp
1个回答
-1
投票

来自客户端的 UDP 连接通常使用 服务器上定义明确的目标端口号,而客户端端口号通常是短暂的,这完全没问题。

发送方/发起方指定目标机器上的目标端口

如果目标是服务器(发起者是客户端),则源端口很可能是临时端口,目标端口很可能是众所周知的端口(1-1024),反之亦然。

无论如何,这应该对你有用(注意

proxy_bind
属性)

stream {
  server {
    listen nnnn udp;
    proxy_pass udp_servers;
    proxy_responses: 0;
    proxy_bind <IP_ADDRESS_OUTSIDE>;
  }

  upstream udp_servers {
    server xxx.xxx.xxx.xxx:nnnnn;
    server yyy.yyy.yyy.yyy:mmmmm;
  }

}
© www.soinside.com 2019 - 2024. All rights reserved.