Puncte:0

Proxy toate cererile către serverul backend

drapel cn

În prezent, am o aplicație Angular care își primește datele de la un backend Symfony. La dezvoltare, am folosit ng servi sistem proxy server de dezvoltare pentru redirecționarea /api, /oauth-token și /mass-media rute către serverul de backend și acest lucru a funcționat bine.

Acum că vreau să implementez aplicația pe un server web, am configurat un server Nginx care servește fișierele statice generate de aplicația Angular construită. Deoarece serverul de dezvoltare nu mai este acolo pentru a trimite cererile prin proxy, trebuie să fac acest lucru prin fișierele de configurare ale lui Nginx, astfel încât să am un proxy invers funcțional.

Ceea ce am nevoie pur și simplu este că dacă cer ceva de genul GET http://localhost/api/products/1, această solicitare devine proxy GET http://localhost:81/api/products/1. Acest lucru ar trebui să fie același pentru toate celelalte metode de solicitare: POST, PUT, PATCH etc.

Problema este că nu pot să scriu un fișier conf care să se potrivească nevoilor mele pentru acest caz de utilizare. Cel mai bine primesc este un răspuns 302 sau 405.

Iată fișierul de configurare pe care îl am în prezent:

Server {
    nume_server gazdă locală;
    rădăcină /var/www/webapp;

    Locație / {
        try_files $uri $uri/ /index.html;
    }

    locație ~ ^/(?:oauth-token|api|media)/ {
        proxy_pass http://localhost:81;
    }
}

Backend-ul este găzduit pe același server și instanță de nginx decât frontend-ul, dar pe un port diferit (portul 81 în loc de 80).

Am încercat să-mi separ blocul de locație în 3 blocuri separate pentru fiecare rută în cazul în care expresia regex sau trecerea proxy-ului a fost greșită, dar obțin aceleași rezultate:

    locație /api/ {
        proxy_pass http://localhost:81/api/;
    }

    locație /oauth-token/ {
        proxy_pass http://localhost:81/oauth-token/;
    }

De asemenea, am încercat să elimin barele oblice de la sfârșitul adresei URL de trecere proxy pentru a vedea dacă aceasta a fost problema, fără niciun rezultat.

Am încercat să urmez sfaturile pe care le-am găsit în alte postări despre Server Fault, dar din păcate niciunul nu a funcționat pentru mine.

Mă puteți ajuta să configurez acest fișier astfel încât aceste solicitări API să fie trimise proxy către serverul meu backend? Mulțumiri.

Michael Hampton avatar
drapel cz
_primul_ fragment de configurare este cel bun și ar trebui să îl utilizați ca bază pentru depanare și să renunțați la cealaltă configurație. Acestea fiind spuse, trebuie să specificați exact ce erori ați primit cu el. Reproduceți problema din nou și apoi căutați în jurnalul de erori nginx.
drapel cn
Problema este că jurnalul de erori nu spune nimic. Am doar mesajele de „închidere grațioasă” pe care le primesc când repornesc docker-ul meu nginx, astfel încât fișierele mele de configurare să fie reîncărcate, acesta este motivul pentru care sunt destul de nedumerit. Jurnalele de acces arată pur și simplu aceleași coduri de răspuns 302 și 405 despre care am scris înainte.
Michael Hampton avatar
drapel cz
Atunci problema este cu aplicația ta și trebuie să te uiți acolo.

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.