Puncte:3

Configurație nginx pentru traficul UDP de proxy inversă (aplicația Minecraft) - 90 mesaj prea lung

drapel kr
seb

Se încearcă să proxy traficul udp. nginx nu aruncă nicio eroare cu privire la configurație. Clientul se conectează până la jumătate (se spune că ar putea ajunge la serverul final), dar apoi conexiunea se blochează și în cele din urmă se închide cu timeout.

Versiunea nginx: 1.21.3 OS: Ubuntu 18.04

nginx.conf:

worker_proceses auto;
pid /run/nginx.pid;
includ /etc/nginx/modules-enabled/*.conf;

worker_rlimit_nofile 30000;

evenimente {
    muncitor_conexiuni 30000;
    multi_accept pe;
}

curent{
Server {
    asculta *:4800-4899 udp;
    proxy_pass 217.178.x.x:$server_port;
}
}

error.log:

2213#2213: *3 recv() a eșuat (90: Mesaj prea lung) în timpul proxy-ului și citirii din amonte, client udp: 49.98.x.x, server: 66.42.x.x:4801, amonte: "217.178.x.x:4801", octeți de la/la client:1464/0, octeți de la/la amonte:0/1464

49.98.x.x: IP client 66.42.x.x: IP proxy 217.178.x.x: IP server final

ip o ieșire

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue stare UNKNOWN grup implicit qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft pentru totdeauna preferred_lft pentru totdeauna
    inet6 ::1/128 scope host 
       valid_lft pentru totdeauna preferred_lft pentru totdeauna

2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq stare UP grup implicit qlen 1000
    link/ether 56:00:03:95:cc:59 brd ff:ff:ff:ff:ff:ff
    inet 66.42.x.x/23 brd 66.42.x.255 scope global dynamic enp1s0
       valid_lft 57402sec preferred_lft 57402sec
    inet6 fe80::5400:3ff:fe95:[xxx]/64 scope link 
       valid_lft pentru totdeauna preferred_lft pentru totdeauna

Ai idee ce e în neregulă? Poate vedea cineva vreo problemă în configurație?

Mulțumiri

Michael Hampton avatar
drapel cz
Nu văd nicio problemă cu configurația dvs. nginx, dar este posibil să existe o problemă cu configurația rețelei serverului. Vă rugăm să postați rezultatul „adresă ip” și să rețineți care interfață se îndreaptă către Internet și care (dacă există) merge la mașina care rulează aplicația dvs. de backend. Consultați, de asemenea, [referința](https://meta.serverfault.com/q/963/126632) noastră despre ofuscarea adreselor IP (adică, în general, nu ar trebui).
seb avatar
drapel kr
seb
Mulțumesc, am adăugat ip o ieșire. Nu există niciun IP privat pe proxy.
Michael Hampton avatar
drapel cz
Interesant. Se pare că nu aveți o problemă cu MTU. 1464 de octeți ar trebui să fie în regulă, cu excepția cazului în care există o lacune în cunoștințele mele! Probabil că există. Ți-am votat întrebarea, deoarece este una bună și interesantă și ar trebui să acorde mai multă atenție.
Puncte:2
drapel fr

Poate că problema „90: Mesaj prea lung” poate fi asociată cu eroarea EMSGSIZE (Dacă mesajul este prea lung pentru a trece atomic prin protocolul de bază, este returnată eroarea EMSGSIZE și mesajul nu este transmis), caz în care puteți încerca să o rezolvați prin creșterea dimensiunii bufferului de trimitere a soclului. Următorii parametri au valori standard:

net.core.wmem_default = 212992
net.core.wmem_max = 212992

Valorile curente ââpe serverul dvs. pot fi verificate cu comanda:

sysctl -a | grep "net.core.wmem"

Pentru test, folosind următoarea comandă, puteți seta, de exemplu, următoarele valori:

sysctl -w net.core.wmem_default = 9999999
sysctl -w net.core.wmem_max = 9999999
echo "net.core.wmem_default = 9999999
net.core.wmem_max = 9999999 ">> /etc/sysctl.conf

Apoi, verificați dacă au fost aplicate corect (acum trebuie să fie 9999999):

sysctl -a | grep "net.core.wmem"

Și încercați să reproduceți problema.

seb avatar
drapel kr
seb
Mulțumiri. Valorile erau cele implicite. Le-am schimbat la 9999999, am verificat că au fost aplicate corect, am repornit nginx, dar problema este exact aceeași, aceeași eroare în jurnal.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.