0

Ich habe einen RESTful Web-Service, die eine Schnittstelle wie aussetzt: istWie konfiguriert man Nginx für eine RESTful-API?

  • GET /api/v1/films/:id/thumb
  • PUT /api/v1/films/:id/thumb
  • ...

Der Web-Server eines NodeJS Cluster hinter einem nginx Reverse Proxy zusammengesetzt .

Ich versuche jetzt, Nginx-Proxy und Client-Puffer zu konfigurieren. Dazu stellte ich die Richtlinien

location ~ /api/v1/films/(.*)/thumb { 
     proxy_buffers 6 500k; 
     proxy_busy_buffers_size 1m; 
     client_max_body_size 3m; 
     client_body_buffer_size 3m; 
     proxy_pass http://backend; 
    } 

Diese Konfiguration hat den Zweck erfüllt, ist aber nicht zufriedenstellend, da es proxy_buffers 3m für die PUT Anforderung konfiguriert, die nicht notwendig ist, und eine Verschwendung von Ressourcen und ein client_max_body_size 3m für ein GET.

Und so suche ich nach einer Möglichkeit, meine Routen auf http-Methoden zusätzlich zu URIs zu konfigurieren.

Danke an alle, die bereit sind, ein wenig Erfahrung zu teilen.

+0

Sie können den Befehl 'map' verwenden, um die HTTP-Methode zu überprüfen. Schauen Sie sich das an (Seite) [http://nginx.org/en/docs/http/ngx_http_map_module.html] – abeyaz

Antwort

1

Sie können die http-Methode der gewünschten maximalen Körpergröße zuordnen. Dies sollte zum Beispiel funktionieren:

map $request_method $max_size { 
    default  3m; 
    PUT   1m; 
    GET   1m; 
} 

location ~ /api/v1/films/(.*)/thumb { 
    proxy_buffers 6 500k; 
    proxy_busy_buffers_size 1m; 
    client_max_body_size $max_size; 
    client_body_buffer_size $max_size; 
    proxy_pass http://backend; 
} 
+0

Danke, ich habe gerade Ihren Vorschlag ausprobiert, aber nginx ruft Namen "client_max_body_size" Direktive ungültigen Wert auf. Ich verstehe nicht warum, irgendeine Idee? –

+0

Können Sie versuchen, Werte wie "1m", "3m" zu zitieren? – abeyaz

+0

Ich bekomme immer noch denselben Fehler. Weißt du, wie ich den variablen Inhalt kontrollieren kann? –

Verwandte Themen