Puncte:0

succes proxy invers nginx în rețeaua locală, dar eșec în rețeaua publică

drapel gi

Învăț cum să folosesc proxy invers pe baza numelor de server cu nginx. Am totul să funcționeze 100% perfect în rețeaua biroului de acasă. Dar când deschid firewall-ul casei mele și port-forward traficul extern către serverul meu proxy invers din casa mea, este ca și cum nginx nu recunoaște regulile numelui serverului și continuă să folosească regula implicită. Deci întrebarea mea este, cum obțin proxy invers cu nume de server pentru a lucra cu trafic extern?

Pentru a descrie ceea ce vreau să spun, voi arăta a Scenariu de succes si Scenariu eșuat.

SCENARI DE SUCCES - Proxy invers al traficului din rețeaua de domiciliu

Acest scenariu funcționează perfect. Am un calculator in casa mea. Computerul are adresa IP 192.168.0.30. Computerul are nginx instalat. Apoi am adăugat aceste două înregistrări la mine /etc/hosts

192.168.0.31 home1.john.com
192.168.0.32 home2.john.com

Apoi am adăugat asta la mine /etc/nginx/nginx.conf

curent {
    include stream_conf.d/*.conf;
}

Apoi am făcut acest fișier /etc/nginx/stream_conf.d/*.conf:

log_format mqtt '$adresă_la distanță [$time_local] $protocol $status $bytes_received '
                '$bytes_trimit $upstream_addr';

harta $ssl_preread_server_name $nume {
    home1.john.com hive_mq;
    home2.john.com hive_mq2;
    implicit hive_mq;
}

în amonte hive_mq {
    server 192.168.0.31:1883;
    zona tcp_mem 64k;
}

în amonte hive_mq2 {
    server 192.168.0.32:1883;
    zona tcp_mem 64k;
}

Server {
    asculta 1883;
    proxy_pass $nume;
    proxy_connect_timeout 1s;

    ssl_preread on;
    access_log /var/log/nginx/mqtt_access.log mqtt;
    error_log /var/log/nginx/mqtt_error.log;
}

Apoi rulez aceste comenzi:

nginx # pornește nginx
nginx -s reload # asigurați-vă că folosesc cele mai recente fișiere conf

mosquitto_pub -h home1.john.com -t hello/world -m 'test la serverul home1.john.com' # 192.168.0.31 primește cu succes mesajul, iar 192.168.0.32 ignoră cu succes acest mesaj
mosquitto_pub -h home2.john.com -t hello/world -m 'test la serverul home2.john.com' # 192.168.0.32 primește cu succes mesajul și 192.168.0.31 ignoră cu succes

Totul este absolut perfect.

SCENARI DE EROARE - Proxy invers al traficului extern

M-am dus la routerul meu WiFi și am activat redirecționarea portului. Voi prelua orice trafic extern de la portul 1883 și îl voi redirecționa către adresa IP 192.168.0.30 (calculatorul meu proxy invers cu nginx pe el) pe portul 1883.

Apoi mi-am dus mașina la casa prietenului meu și i-am luat laptopul. Am adăugat aceste două înregistrări pe laptop-ul lui /etc/hosts fişier:

# presupune că 72.142.34.203 este adresa mea IPv4 publică de acasă
72.142.34.203 home1.john.com
72.142.34.203 home2.john.com

Apoi am rulat aceste comenzi pe laptopul lui:

mosquitto_pub -h home1.john.com -t hello/world -m 'test la serverul home1.john.com' # 192.168.0.31 primește cu succes mesajul, iar 192.168.0.32 ignoră cu succes acest mesaj

mosquitto_pub -h home2.john.com -t hello/world -m 'test la serverul home2.john.com' # REZULTAT INCORECT - 192.168.0.31 a primit acest mesaj, iar 192.168.0.32 nu a primit acest mesaj

De ce 192.168.0.32 nu a reușit să obțină testați pe serverul home2.john.com de la a doua comanda? Este ca și cum proxy-ul invers nginx nu recunoaște numele serverului... s-au pierdut acele informații când am făcut redirecționarea portului pe routerul meu? Sau am inteles gresit ceva? Cum obțin proxy invers cu numele serverului pentru a lucra cu traficul extern în rețeaua mea de acasă

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.