
Ich habe eine API-First-App, die über separate Server für das Front-End und das Back-End verfügt.
Das Frontend ist lediglich ein NGINX-Server, der eine statische Angular-Site bedient. Das Backend ist ein Play Scala-Server.
Um CORS nicht mehr verwenden zu müssen, habe ich kürzlich alles, was weitergeleitet werden soll, /api
mithilfe api.myapp.com
eines Blocks wie diesem eingerichtet:
location /api/ {
proxy_pass https://api.myapp.com/;
}
Alles scheint einwandfrei zu funktionieren, außer dass der Frontend-Server hin und wieder aufhört, Anfragen weiterzuleiten, und nur 502-Fehler zurückgibt, obwohl einige Anfragen durchkommen.
Wenn ich den NGINX-Server neu starte, ist alles in Ordnung.
Wenn ich mir die NGINX-Protokolle ansehe, sehe ich eine Reihe von 499-Fehlern für die /API-Anfragen.
[15/Jan/2017:22:31:18 +0000] "GET /api/1/users/tzXWM4hNAHUvT9SfA-pAGA/organizations?v=3 HTTP/1.1" 499 0 "https://app.myapp.com/dashboard" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" "10.225.158.152"
Wenn ich mir die Backend-Protokolle anschaue, erreichen die Anfragen, die 502 zurückgeben, nie das Backend.
Würde NGINX einige URLs irgendwie drosseln oder denken, dass der Backend-Server aus irgendeinem Grund nicht verfügbar ist?
Ich weiß, dass ich in Apache, um etwas Ähnliches zu tun, für die ProxyPass-Direktive „retry=0“ festlegen musste.