
우리는 Nginx 역방향 프록시를 통해 게임 서버에 대한 UDP 패킷을 프록시하고 있습니다. Nginx가 요청을 처리할 수 없기 때문에 클라이언트 시간 초과가 자주 발생합니다. 처음에는 완벽하게 작동하지만 게임 서버에 더 많은 클라이언트가 연결되면(40-50) 문제가 발생합니다.
Nginx가 이를 처리하도록 하려면 어떻게 해야 할까요?
프록시 설정은 다음과 같습니다.
stream {
upstream backend {
server [server-ip]:[port];
}
server {
listen [port];
proxy_pass backend;
}
server {
listen [port] udp reuseport;
proxy_pass backend;
}
}
우리의 오류 로그는 다음과 같은 오류로 가득 차 있습니다.
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
이러한 UDP 패킷을 처리하도록 Nginx를 어떻게 구성할 수 있나요?
답변1
이 시도:
스트림 { 업스트림 백엔드 { 서버 [서버-IP]:[포트]; }
server {
listen [port];
proxy_pass backend;
}
server {
listen [port] udp reuseport;
proxy_pass backend;
proxy_bind $remote_addr transparent;
}
}
답변2
이것은 오래되고 드문 문제인 것 같습니다. Nginx는 일반적으로 UDP 패킷을 잘 처리할 수 있지만(나에게는 문자 그대로 몇 년 동안 잘 작동했습니다) 현재 동일한 문제에 직면하고 있습니다. 일부에서는 작은 프록시 버퍼가 원인이거나 다른 프록시 구성이 원인이라고 말합니다. 한 사람은 라우터에 결함이 있다고 말했습니다.
시도해볼 수 있는 추가 정보 및 구성 [최신 답변 2015]:https://stackoverflow.com/questions/4804822/client-closed-prematurely-connection-while-sending-to-client-in-nginx
라우터에 결함이 있다고 말한 사람의 블로그[2018]:https://swazzy.com/2018/04/29/evasive-errors