Î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ă