Puncte:0

Proxy invers pentru a direcționa utilizatori diferiți către locațiile corespunzătoare

drapel gt
kyb

Am un server. Una dintre funcțiile sale este SyncThing. Această aplicație nu are autorizație per utilizator, doar administrator. Așa că am decis să rulez diferite instanțe de sincronizare pentru fiecare utilizator.

Pentru procesul de autorizare aș dori să folosesc nume de utilizator și parole Unix (din /etc/passwd).

Imaging pentru a folosi nginx ca proxy invers și verificator de autorizare. Ați putea vă rog să îmi verificați ideea și să mă ajutați cu exemple.

Exemplu de aspect al serviciilor:

  • Sincronizarea utilizatorului1 ascultă pe 127.0.0.1:8384
  • Sincronizarea utilizatorului2 ascultă pe 127.0.0.1:8385
  • Sincronizarea utilizatorului3 ascultă pe 127.0.0.1:8386
  • Nginx (sau altul) ascultă pe toate interfețele, inclusiv IPv6 pe portul HTTPS implicit 0.0.0.0:433

Adresa ar fi https://synxrage.local/syncthing. Portul nu trebuie să apară niciodată în adrese URL.

În funcție de utilizatorul autorizat cu succes, proxy-ul direcționează către un port intern diferit și utilizatorul își vede panoul de administrare.

vidarlo avatar
drapel ar
Răspunde asta la întrebarea ta? [Cum pot trimite cereri de pe serverul meu web?](https://serverfault.com/questions/1035016/how-can-i-forward-requests-from-my-web-server)
drapel in
@vidarlo nu chiar. Problema reală (utilizați backend-uri diferite pentru diferiți utilizatori autentificați) nu este abordată acolo. Nu stiu daca e posibil chiar asa.
drapel in
[acest bilet](https://trac.nginx.org/nginx/ticket/439) sugerează [variabila `$remote_user`](http://nginx.org/en/docs/http/ngx_http_core_module.html#var_remote_user ). Ar trebui să fie posibil să se utilizeze acest lucru pentru a defini serverul de backend de utilizat.
kyb avatar
drapel gt
kyb
va multumesc baieti pentru comentarii
Puncte:1
drapel in

Bine, asta m-a deranjat și de fapt a fost destul de ușor să folosesc $utilizator_la distanță variabil.

Pentru a activa autentificarea PAM, trebuie să faceți câteva lucruri:

Instalare nginx-extras:

sudo apt -y install nginx-extras

Crea /etc/pam.d/nginx și adăugați următorul conținut:

auth include common-auth
contul include un cont comun

Permiteți lui nginx să citească fișierul umbră:

sudo usermod -aG shadow www-data

Instrucțiuni gasit aici.

Acum puteți configura nginx

# configurați unul în amonte per utilizator
# dați-i numele utilizatorului care se conectează

utilizator în amonte {
    server localhost:8384;
}

utilizator din amonteb {
    server localhost:8385;
}

utilizator în amonte {
    server localhost:8386;
}

# configurați acum proxy-ul invers real

Server {
    asculta 80 default_server;

    Locație / {
        # adăugați autentificarea pam
        auth_pam "Autentificare PAM";
        auth_pam_service_name "nginx";

        # configurați proxy invers pentru a se conecta la backend-ul per utilizator
        proxy_pass http://$utilizator_la distanță;
    }
}
kyb avatar
drapel gt
kyb
Există o modalitate de a gestiona în amonte dinamic. Adică adăugați sau eliminați utilizatori în funcție de modificarea listei de utilizatori în timpul execuției. Chiar cred că pentru o matematică bazată pe UID: UID-1000+8384? unde UID este ID-ul utilizatorului Linux. Primul utilizator are de obicei ID 1000.
kyb avatar
drapel gt
kyb
Un mare mulțumesc!!

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.