Was ist der Unterschied zwischen proxy_request_buffering und proxy_buffering auf nginx?

8

Ich sehe, dass proxy_request_buffering die Anfrage und proxy_buffering die Antwort puffert.

Ich möchte jedoch die Interna verstehen, was dies bedeutet.

tdecs
quelle

Antworten:

9

Aus der Nginx- Dokumentation :

Proxy_Buffering

Syntax: proxy_buffering on | off;
Default:    
proxy_buffering on;
Context:    http, server, location
Enables or disables buffering of responses from the proxied server.

Wenn die Pufferung aktiviert ist, erhält nginx so schnell wie möglich eine Antwort vom Proxyserver und speichert sie in den Puffern, die durch die Anweisungen proxy_buffer_size und proxy_buffers festgelegt wurden . Wenn die gesamte Antwort nicht in den Speicher passt, kann ein Teil davon in einer temporären Datei auf der Festplatte gespeichert werden. Das Schreiben in temporäre Dateien wird durch die Anweisungen proxy_max_temp_file_size und proxy_temp_file_write_size gesteuert .

Wenn die Pufferung deaktiviert ist, wird die Antwort sofort nach dem Empfang synchron an einen Client übergeben. nginx versucht nicht, die gesamte Antwort vom Proxyserver zu lesen. Die maximale Größe der Daten, die nginx gleichzeitig vom Server empfangen kann, wird durch die Anweisung proxy_buffer_size festgelegt .

Die Pufferung kann auch aktiviert oder deaktiviert werden, indem im Antwortheaderfeld "X-Accel-Buffering" "Ja" oder "Nein" übergeben wird. Diese Funktion kann mithilfe der Anweisung proxy_ignore_headers deaktiviert werden .

Proxy_Request_Buffering

Syntax: proxy_request_buffering on | off;
Default:    
proxy_request_buffering on;
Context:    http, server, location
This directive appeared in version 1.7.11.
Enables or disables buffering of a client request body.

Wenn die Pufferung aktiviert ist, wird der gesamte Anforderungshauptteil vom Client gelesen, bevor die Anforderung an einen Proxyserver gesendet wird.

Wenn die Pufferung deaktiviert ist, wird der Anforderungshauptteil sofort nach dem Empfang an den Proxyserver gesendet. In diesem Fall kann die Anforderung nicht an den nächsten Server übergeben werden, wenn nginx bereits mit dem Senden des Anforderungshauptteils begonnen hat.

Wenn HTTP / 1.1 segmentierte Übertragungscodierung verwendet wird , um die ursprüngliche Anforderung Körper zu senden, wird die Anfrage Körper unabhängig von der Richtlinie Wert gepuffert werden , wenn HTTP / 1.1 wird freigegeben für Proxying.

Bentek
quelle