
Estamos enviando paquetes UDP para un servidor de juegos a través de un proxy inverso Nginx. Los clientes agotan el tiempo de espera con mucha frecuencia porque Nginx no puede manejar las solicitudes. Inicialmente funciona perfectamente, pero cuando se conectan más clientes al servidor del juego (40-50), encontramos problemas.
¿Cómo podríamos hacer que Nginx lo maneje?
Aquí está la configuración del proxy.
stream {
upstream backend {
server [server-ip]:[port];
}
server {
listen [port];
proxy_pass backend;
}
server {
listen [port] udp reuseport;
proxy_pass backend;
}
}
Nuestro registro de errores está lleno de errores 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
¿Cómo puedo configurar Nginx para manejar estos paquetes UDP?
Respuesta1
Prueba esto:
flujo {backend ascendente {servidor [ip-servidor]:[puerto]; }
server {
listen [port];
proxy_pass backend;
}
server {
listen [port] udp reuseport;
proxy_pass backend;
proxy_bind $remote_addr transparent;
}
}
Respuesta2
Este parece ser un problema antiguo y poco común. Por lo general, Nginx puede manejar paquetes UDP muy bien (funcionó bien durante años literales para mí), pero actualmente me encuentro con el mismo problema. Algunos dicen que la culpa es de un pequeño búfer de proxy o de alguna otra configuración de proxy. Uno dijo que es un enrutador defectuoso.
Más información y configuraciones para probar [respuesta más reciente 2015]:https://stackoverflow.com/questions/4804822/client-closed-prematurely-connection-when-sending-to-client-in-nginx
Blog de la persona que dijo que era un enrutador defectuoso [2018]:https://swazzy.com/2018/04/29/errores-evasivos