Die gemeinsam genutzte Nginx UDP-Proxy-Verbindung ist belegt

Die gemeinsam genutzte Nginx UDP-Proxy-Verbindung ist belegt

Wir leiten UDP-Pakete für einen Spieleserver über einen Nginx-Reverse-Proxy weiter. Bei Clients kommt es sehr häufig zu Timeouts, da Nginx die Anfragen nicht verarbeiten kann. Anfangs funktioniert es einwandfrei, aber wenn mehr Clients mit dem Spieleserver verbunden sind (40-50), treten Probleme auf.

Wie können wir Nginx dazu bringen, damit umzugehen?

Hier ist das Proxy-Setup

stream {
    upstream backend {
        server [server-ip]:[port];
    }

    server {
        listen [port];
        proxy_pass backend;
    }

    server {
        listen [port] udp reuseport;
        proxy_pass backend;
    }
}

Unser Fehlerprotokoll ist voll mit Fehlern wie diesem:

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

Wie kann ich Nginx so konfigurieren, dass diese UDP-Pakete verarbeitet werden?

Antwort1

Versuche dies:

Stream { Upstream-Backend { Server [Server-IP]:[Port]; }

server {
    listen [port];
    proxy_pass backend;
}

server {
    listen [port] udp reuseport;
    proxy_pass backend;
    proxy_bind $remote_addr transparent;
}

}

Antwort2

Dies scheint ein altes und seltenes Problem zu sein. Nginx kann normalerweise problemlos mit UDP-Paketen umgehen (hat bei mir buchstäblich jahrelang problemlos funktioniert), aber ich habe derzeit dasselbe Problem. Einige sagen, ein kleiner Proxy-Puffer oder eine andere Proxy-Konfiguration seien schuld. Einer sagte, es liege an einem fehlerhaften Router.

Weitere Informationen und Konfigurationen zum Ausprobieren [neueste Antwort 2015]:https://stackoverflow.com/questions/4804822/client-closed-prematurely-connection-while-sending-to-client-in-nginx

Blog der Person, die sagte, es sei ein defekter Router [2018]:https://swazzy.com/2018/04/29/evasive-errors

verwandte Informationen