
Estamos fazendo proxy de pacotes UDP para um servidor de jogo por meio de um proxy reverso Nginx. Os clientes atingem o tempo limite com muita frequência porque o Nginx não consegue lidar com as solicitações. Inicialmente funciona perfeitamente, mas quando mais clientes estão conectados ao servidor do jogo (40-50), encontramos problemas.
Como poderíamos fazer o Nginx lidar com isso?
Aqui está a configuração do proxy
stream {
upstream backend {
server [server-ip]:[port];
}
server {
listen [port];
proxy_pass backend;
}
server {
listen [port] udp reuseport;
proxy_pass backend;
}
}
Nosso log de erros está cheio de erros como este:
2023/02/18 12:40:29 [alert] 3951459#3951459: *5777636 shared connection is busy while proxying and sending to client, udp client: [client-ip], server: 0.0.0.0:[port], upstream: "[server-ip]:[port]", bytes from/to client:1684904/1724744, bytes from/to upstream:1725538/1684904
Como posso configurar o Nginx para lidar com esses pacotes UDP?
Responder1
Experimente isto:
stream {backend upstream {servidor [server-ip]:[porta]; }
server {
listen [port];
proxy_pass backend;
}
server {
listen [port] udp reuseport;
proxy_pass backend;
proxy_bind $remote_addr transparent;
}
}
Responder2
Este parece ser um problema antigo e raro. O Nginx geralmente consegue lidar bem com pacotes UDP (funcionou bem por anos literais para mim), mas atualmente estou enfrentando o mesmo problema. Alguns dizem que a culpa é de um pequeno buffer de proxy ou de alguma outra configuração de proxy. Um disse que é um roteador com defeito.
Mais informações e configurações para experimentar [nova resposta 2015]:https://stackoverflow.com/questions/4804822/client-closed-prematurely-connection-while-sending-to-client-in-nginx
Blog da pessoa que disse que o roteador estava com defeito [2018]:https://swazzy.com/2018/04/29/evasive-errors