Ich versuche herauszufinden, wie alle in ein bestimmtes Verzeichnis gestellten Anforderungen in nginx eine JSON-Zeichenfolge ohne Umleitung zurückgegeben werden können.
Beispiel:
curl -i http://example.com/api/call1/
Erwartetes Ergebnis:
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Type: application/json
Date: Fri, 13 Apr 2012 23:48:21 GMT
Last-Modified: Fri, 13 Apr 2012 22:58:56 GMT
Server: nginx
X-UA-Compatible: IE=Edge,chrome=1
Content-Length: 38
Connection: keep-alive
{"logout": true}
Folgendes habe ich bisher in meiner Nginx-Konf.:
location ~ ^/api/(.*)$ {
index /api_logout.json;
alias /path/to/file/api_logout.json;
types { }
default_type "application/json; charset=utf-8";
break;
}
Wenn ich jedoch versuche, die Anfrage zu stellen, bleibt der Inhaltstyp nicht erhalten:
$ curl -i http://example.com/api/call1/
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Type: application/octet-stream
Date: Fri, 13 Apr 2012 23:48:21 GMT
Last-Modified: Fri, 13 Apr 2012 22:58:56 GMT
Server: nginx
X-UA-Compatible: IE=Edge,chrome=1
Content-Length: 38
Connection: keep-alive
{"logout": true}
Gibt es einen besseren Weg, dies zu tun? Wie kann ich den Anwendungs- / JSON-Typ zum Festhalten bringen?
EDIT: Lösung!
Ich habe herausgefunden, dass Sie in der return-Anweisung nur manuelle Zeichenfolgen senden können, also habe ich das getan, anstatt Aliase zu verwenden!
Endgültiger Code, den ich verwendet habe:
location /api {
types { }
default_type "application/json";
return 200 "{\"logout\" : true"}";
}
redirect
oderpermanent
Flag angegeben ist.Sehr einfach. Die gesamte Konfiguration könnte sein:
quelle