Unten ist ein ziemlich Standard nginx proxy_pass Setup:Nginx proxy_pass fehlt Fehler Körper
server {
listen 80;
server_name ireport.jungdigital.com;
access_log /var/log/nginx/ireport.access.log;
root /var/www/ireport.jungdigital.com/dist;
index index.html index.htm;
location/{
}
location /api/ {
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Reques
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
if ($request_method = 'POST') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Reques
}
if ($request_method = 'PUT') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Reques
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Reques
}
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-proxy true;
proxy_set_header Host ireport.somehost.org;
proxy_pass http://ireport_dyndns/api/;
proxy_ssl_session_reuse off;
proxy_redirect off;
}
}
Die API, die ich Proxying kehrt Reaktion des Körpers, die Fehlerinformationen enthalten, die für 400, 404 und 500 Fehlercodes. Zum Beispiel auf einem 404, meine Antwort Körper aussehen könnte:
{
"errorCode": "TOKEN_NOT_FOUND",
"errorMessages": [
"Could not find a matching authorization token."
]
}
Wenn ich die Anfrage ohne den Proxy ausführen, bekomme ich die Antwort Körper für die Fehler.
Wenn ich den Nginx-Proxy verwende, werden die Antwort-Körper aus irgendeinem Grund von Nginx verschluckt und ich sehe überhaupt keine Antwort in meinem Web-Browser Netzwerk-Tab.
Gibt es eine Möglichkeit, Nginx mitzuteilen, Antwortkörper für Fehlercodes in einem Proxy_pass zurückzugeben?
Vorsichtig lesen http://nginx.org/r/add_header –
@AlexeyTen Es ist kein Header, den ich brauche, es ist der Antwortkörper selbst. Ich habe etwas mehr gegraben und es scheint, dass der Körper tatsächlich zurückgegeben wird, aber vom Browser selbst verschluckt wird. – JoshJ
Das liegt daran, dass Browser Header benötigen, um den Zugriff auf den Antworttext zu ermöglichen. Ich denke, Sie brauchen 'immer' Flag für 'add_header' –