Alle Anfragen per Proxy an den Backend-Server weiterleiten

Alle Anfragen per Proxy an den Backend-Server weiterleiten

Ich habe derzeit eine Angular-App, die ihre Daten von einem Symfony-Backend bezieht. Bei der Entwicklung habe ich das ng serveProxysystem des Entwicklungsservers verwendet, um die /api- /oauth-tokenund /media-Routen zum Backend-Server umzuleiten, und das hat gut funktioniert.

Da ich die App nun auf einem Webserver bereitstellen möchte, richte ich einen Nginx-Server ein, der die von der erstellten Angular-App generierten statischen Dateien bereitstellt. Da der Entwicklungsserver nicht mehr vorhanden ist, um die Anfragen weiterzuleiten, muss ich dies über die Conf-Dateien von Nginx tun, damit ich einen funktionsfähigen Reverse-Proxy habe.

Ich brauche einfach, dass, wenn ich etwas wie anfordere GET http://localhost/api/products/1, diese Anfrage an weitergeleitet wird GET http://localhost:81/api/products/1. Dies sollte für alle anderen Anfragemethoden gleich sein: POST, PUT, PATCH usw.

Das Problem ist, dass ich scheinbar keine Conf-Datei schreiben kann, die meinen Anforderungen für diesen Anwendungsfall entspricht. Das Beste, was ich bekomme, ist eine 302- oder 405-Antwort.

Hier ist die Konfigurationsdatei, die ich derzeit habe:

server {
    server_name localhost;
    root /var/www/webapp;

    location / {
        try_files $uri $uri/ /index.html;
    }

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

Das Backend wird auf demselben Server und derselben Instanz von Nginx wie das Frontend gehostet, jedoch auf einem anderen Port (Port 81 statt 80).

Ich habe versucht, meinen Standortblock für jede Route in drei separate Blöcke aufzuteilen, für den Fall, dass mein regulärer Ausdruck oder der Proxy-Pass falsch war, aber ich erhalte die gleichen Ergebnisse:

    location /api/ {
        proxy_pass http://localhost:81/api/;
    }

    location /oauth-token/ {
        proxy_pass http://localhost:81/oauth-token/;
    }

Ich habe auch versucht, die abschließenden Schrägstriche am Ende der Proxy-Pass-URL zu entfernen, um herauszufinden, ob dies das Problem war, aber ohne Erfolg.

Ich habe versucht, den Ratschlägen zu folgen, die ich in anderen Posts zu Server Fault gefunden habe, aber leider hat keiner von ihnen bei mir geholfen.

Können Sie mir helfen, diese Datei so zu konfigurieren, dass diese API-Anfragen per Proxy an meinen Backend-Server weitergeleitet werden? Danke.

verwandte Informationen