Puncte:1

NGINX poate apela un alt serviciu înainte de expediere

drapel us

Folosim NGINX ca proxy invers, acesta trimite apelurile din exterior către microserviciile noastre interne Java:

introduceți descrierea imaginii aici

Am dori să adăugăm un serviciu special care să servească drept „om-in-the-middle”, dar numai pentru partea de solicitare. Scopul este de a decora cererea originală (autentificare, adăugare/modificare anteturi HTTP, verificare drepturi de acces). „Sarcinile decorative” implică o logică de afaceri complicată care nu poate fi configurată pe NGINX în sine.

Dorim ca serviciul să fie apelat mai întâi, iar apoi să îi trimitem răspunsul (în special anteturile HTTP!) ca o solicitare către unul dintre microservicii. Poate și opțional să apelați serviciile expediate cu corpul original, dar cu anteturile HTTP returnate de la serviciul decorator.

Când serviciul returnează o eroare HTTP, ar trebui să revină direct la apelant fără a trimite.

Serviciul este implementat ca o aplicație Java Spring Boot. Este un serviciu web obișnuit.

Este posibil să fie configurat în NGINX și cum?

Pentru a fi clar: nu întreb despre cum să implementez acest serviciu specific.Ceea ce am nevoie este doar să știu dacă (și cum) poate fi configurat NGINX astfel încât să apeleze un alt serviciu înainte de a trimite apelul și că NGINX trece anteturile (și poate și corpul, dar nu neapărat) returnate de la acest serviciu la apel.

introduceți descrierea imaginii aici

drapel in
Ce poate fi folosit pentru a implementa logica dvs. de afaceri? Asta ar dicta restul configurației.
drapel in
nginx poate fi extins destul de extins cu scripturi. Documentația conține exemple pentru autorizare, chiar ați încercat asta?
drapel in
Nu veți primi nicio recomandare de produse aici, asta e în afara subiectului.
Honza Zidek avatar
drapel us
@GeraldSchneider Întreb cum să configurez NGINX să apeleze un alt serviciu web înainte de a trimite apelul, **pentru a nu primi nicio recomandare de produs**. Și este mai ușor pentru noi să scriem logica de afaceri în Java, mai degrabă decât să o scriem în NGINX. Nu în ultimul rând, pentru orice modificare în NGINX trebuie să întrebăm echipa de administrator de sistem - preferăm să fim flexibili și să efectuăm modificările pe cont propriu. NGINX este responsabil pentru multe alte lucruri, nu numai pentru aplicațiile noastre. Operațiunea include citirea din DB, stocarea în cache a datelor și regulile de afaceri în afara sferei de responsabilitate a proxy-ului invers.
drapel in
Scuze, atunci am înțeles greșit întrebarea ta. Se părea că ați căuta un serviciu care implementează logica. Apoi reveniți la întrebarea: ați încercat [exemplele din documentație](https://github.com/nginx/njs-examples/)? Dacă ați întâmpinat probleme cu ei, ar trebui să o adăugați la întrebarea dvs.
Honza Zidek avatar
drapel us
@GeraldSchneider Am editat întrebarea pentru a evita această neînțelegere :) Puteți să mă navigați poate mai detaliat în exemple? Nu sunt familiarizat cu terminologia NGINX și m-ar ajuta dacă m-ați trimite direct la partea legată de problema mea. (Îmi pare rău dacă sună a lene, dar sunt programator Java și nu am ambiția să devin syadmin :) )
Puncte:3
drapel it

Da, este posibil.

Aruncăm o privire la acest exemplu. Pe scurt, puteți folosi auth_request directivă pentru a prelua anteturile suplimentare dorite. Utilizare proxy_set_header pentru a adăuga anteturi suplimentare la cererea principală.

Paul avatar
drapel cn
Bun venit la Server Fault! Răspunsul dumneavoastră sugerează că o soluție viabilă la întrebare este disponibilă pe un alt site web. Familia de site-uri web de întrebări și răspunsuri Stack Exchange [în general se încruntă la acest tip de răspuns](https://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers) ). Citiți [Cum scriu un răspuns bun?](http://serverfault.com/help/how-to-answer) și luați în considerare revizuirea răspunsului pentru a include pașii necesari pentru a rezolva problema. Și nu uitați să faceți [turul site-ului](http://serverfault.com/tour).

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.