nginx: Mit Proxy-Pass an die geproxte URL anhängen

nginx: Mit Proxy-Pass an die geproxte URL anhängen

Ich beschäftige mich mit einigen Legacy-Problemen, bei denen ich Server neu konfigurieren muss, auf denen eine PHP-basierte Anwendung gehostet wird. Eine der Entscheidungen war, von Apache auf Nginx umzusteigen.

Jetzt unterstützt die Anwendung zwei Arten von Antworten;

/some/path -> HTML templates
/api/some/path -> JSON

Die Anwendung basiert auf Laravel. Jetzt habe ich zwei virtuelle Hosts my.app.comund api.app.com. Was ich mir als gute Lösung überlegt habe, ist, api.app.comdie Anfragen an zu senden, my.app.comwobei /apidem Anfragepfad ein vorangestellt wird. Also:

GET api.app.com/user -> NGINX PROXY -> my.app.com/api/user

Ich bin kein Experte für Nginx-Konfigurationen und meiner Meinung nach sollte Folgendes funktionieren:

location / {
    proxy_pass http://my.app.com:8888/api;
    proxy_set_header X-Real-IP $remote_addr;
}

Die Idee besteht darin, sicherzustellen, dass Personen, die versuchen, von abzurufen, api.app.com/somethingtatsächlich eine Antwort von erhalten. my.app.com/api/something Aber das funktioniert nicht. Ich erhalte ständig Ausnahmen von der App, die besagen, dass der Pfad in den Routen nicht gefunden werden kann.

Kann mir jemand sagen, was hier los ist?

Antwort1

Ein Tipp vonhttps://serverfault.com/a/586607:

location ~ /(?<path>.*) {
    proxy_pass http://my.app.com:8888/api/$path;
    proxy_set_header X-Real-IP $remote_addr;
}

verwandte Informationen