Puncte:0

nginx Reverse-Proxy: folosind modulul de flux pentru passthrough și proxy invers

drapel in

Folosesc modulul de flux pentru a trece traficul tls unde nu pot inversa proxy-ul, de ex. pentru că nu am certificatul (instalare locală 3CX) sau rupe lucruri (ssl vpn cu client cert). Apoi redirec „restul” la un alt IP pe aceeași gazdă (127.0.0.1) pentru reverse proxy. Problema a fost că remote_addr nu a fost întotdeauna 127.0.0.1 și se pare că nu există nicio modalitate de a seta adresa „reală” de la distanță. Pentru a evita acest lucru, am activat proxy_protocol și am folosit $proxy_protocol_addr.

Cu toate acestea, acest lucru întrerupe toate site-urile web de trecere și nu am găsit o modalitate de a activa condiționat proxy_protocol numai pentru „implicit”

Fac toate acestea ca să pot potrivi pe sni și să folosesc un singur IP pentru toate site-urile web.

Nu sunt obținut să o fac exact în acest fel, dacă cineva are o idee cum să realizeze asta într-un mod diferit/mai bun, sunt urechile.

curent {
  harta $ssl_preread_server_name $targetBackend {
    3cx.example.com 192.168.1.2:443;
    vpn.example.com 192.168.1.3:443;
    implicit 127.0.0.1:443;
  }
  Server {
    asculta 192.168.1.100:443;
    proxy_connect_timeout 1;
    proxy_timeout 3s;
    rezolutor 192.168.1.1;
    proxy_protocol activat;
    proxy_pass $targetBackend;
    ssl_preread on;
  }

deci... cum să faci proxy_protocolul condiționat (afaik dacă pur și simplu nu funcționează în contextul fluxului) sau să-l rezolvi în alt mod?

Puncte:0
drapel us

Se pare că trebuie să instalați un frontend pentru 3cx și vpn care decodifică protocolul PROXY și îl convertește în solicitări HTTP pentru serverul web real.

O altă opțiune este să aveți instanțe nginx separate pentru serviciile web și protocoalele proxy.

Questi avatar
drapel in
Nu, nu funcționează, am încercat asta, dar se pare că o iau literal și nu rezolvă variabila :-(
drapel us
Atunci cred că trebuie să instalați un proxy compatibil în fața lui `3cx` și `vpn`, care decodifică protocolul PROXY și trimite cererile către site-uri web.
Questi avatar
drapel in
Deci, practic, un proxy de flux cu proxy_protocol pe care apoi redirecționează către un alt proxy de flux care ascultă proxy_protocol și apoi redirecționează fără proxy_protocol? Ar merge asta? Este aceasta cea mai ușoară soluție? sună un fel de soluție
drapel us
Da, aceasta este o soluție, dar din moment ce `proxy_protocol` condițional nu pare a fi posibil, atunci este un singur mod. O altă modalitate este să rulați două instanțe separate de nginx, cealaltă gestionând site-uri web, iar cealaltă proxy.
Questi avatar
drapel in
bine, multumesc. se pare că, deși aceasta este o soluție, este singura soluție? dacă cineva știe o soluție mai bună nu ezitați să posteze, până atunci voi marca aceasta ca soluție. multumesc din nou De fapt... am observat că „răspunsul” este în comentarii, nu răspunsul... Poate că poți să postezi un răspuns nou sau să-l editezi pe cel actual?
drapel us
Am actualizat raspunsul.

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.