
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.com
und api.app.com
. Was ich mir als gute Lösung überlegt habe, ist, api.app.com
die Anfragen an zu senden, my.app.com
wobei /api
dem 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/something
tatsä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;
}