Puncte:0

nginx proxy_pass a diferitelor subdomenii în locații diferite într-un singur bloc de server

drapel br
aag

Modul tipic de redirecționare inversă a diferitelor subdomenii în locuri diferite cu Nginx este de a instala un server unic pentru fiecare subdomeniu, astfel:

Server {
    nume_server subdomeniu1.example.com;
    Locație / {
        proxy_pass http://hostname1:port1;
    }
}
Server {
    nume_server subdomeniu2.example.com;
    Locație / {
        proxy_pass http://hostname2:port2;
    }
}

Este posibil să se obțină același rezultat într-un singur bloc de server (de exemplu, server_name .example.com, fără niciun subdomeniu specificat), prin specificarea unor locații diferite în acel bloc de server?

Puncte:1
drapel jp

Dacă specificați locații diferite, atunci nu va fi același rezultat, deoarece aveți același rezultat Locație / in doi Server blocuri.

aag avatar
drapel br
aag
vă mulțumesc pentru timpul acordat pentru a răspunde. Poate m-am exprimat ambiguu.Scopul este de a inversa proxy diferite subdomenii, fiecare dintre acestea fiind deservit de un server intern diferit. În loc să instalez un număr de servere nginx individuale, ceea ce face configurația dificilă, mă întrebam dacă pot specifica un singur „server wildcard” care va direcționa apoi cererile către serverele interne corecte, în funcție de subdomeniile solicitate.
drapel jp
Puteți utiliza o variabilă ca parametru `proxy_pass` Vezi https://stackoverflow.com/questions/5743609/dynamic-proxy-pass-to-var-with-nginx-1-0
aag avatar
drapel br
aag
Acum am folosit o variabilă, dar se dovedește că atunci trebuie să declar în mod explicit o regulă de rescriere. Încă nu îmi dau seama cum să fac asta corect.
Puncte:1
drapel us

Da, este posibil.

Mai întâi, configurați un Hartă pentru a mapa domenii în proxy_pass destinatii:

harta $host $dest {
    www1.example.com 192.168.10.10:8001;
    www2.example.com 192.168.10.11:8002;
    implicit 192.168.10.12;
}

Server {
    nume_server *.example.com;

    proxy_pass http://$dest;
}

Când nginx primește o solicitare, aceasta merge la proxy_pass directivă. Apoi se rezolvă $dest folosind Hartă, care mapează diferite nume de gazdă virtuală către destinații. Apoi nginx trimite cererea prin proxy folosind destinația rezolvată.

Nu uitați să configurați corect destinația implicită. Fiecare server web public primește solicitări pentru tot felul de nume de domenii. De obicei, doriți să returnați 404 pe gazde virtuale necunoscute.

aag avatar
drapel br
aag
Actualizați. Se pare că proxy_pass la o variabilă necesită o regulă de rescriere explicită. Mă joc cu astfel de reguli, dar încă nu mi-am dat seama.
drapel us
Ați încercat să utilizați o adresă URL de destinație diferită în „hartă”? `icinga.example.com 10.10.10.7/icingaweb2` ca linia `hartă`? De asemenea, trebuie să configurați corect adresa URL de bază în fiecare configurație a aplicației.
aag avatar
drapel br
aag
dacă `icinga.example.com` este mapat la `10.10.10.7/icingaweb2`, clientul este trimis la pagina inexistentă `https://icinga.example.com/icingaweb2/authentication/login`
aag avatar
drapel br
aag
Dragă @tero, trebuie să revin la asta. Soluția dvs. funcționează pentru transferuri simple 1:1. Cu toate acestea, de ex. `https://icinga.example.com` ar trebui să fie transmis proxy la `http://10.10.10.7/icingaweb2`, în timp ce `https://mail.example.com` ar trebui să ajungă la `http://10.10.10.9 /iredmail/mail` etc. Se pare că înțeleg că trebuie să definesc blocuri de locație, dar acestea nu vor funcționa cu subdomenii. Mai ai un sfat?
drapel us
Sunteți sigur că ați setat corect adresa URL rădăcină a aplicației `icinga`?

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.