Warum scheint sub_filter in Verbindung mit proxy_pass nicht zu funktionieren?

20

Bei folgender Konfiguration von nginx:

server {
    listen  80;
    server_name apilocal;
    sub_filter  "apiupstream/api" "apilocal";
    sub_filter_once off;
    location /people/ {
            proxy_pass  http://apiupstream/api/people/;
            proxy_set_header Accept-Encoding "";
    }
}

Sub_filter beantwortet Teile der Antwort nicht richtig. Sobald ich proxy_pass aus der Konfiguration entferne, funktioniert es ordnungsgemäß. Viele Leute mit diesem Problem haben letztendlich eine gzip-Komprimierung vom Upstream-Server. Ich habe überprüft, dass auf meinem Upstream-Server die GZIP-Codierung für die Antworten nicht aktiviert ist. Aber nur für den Fall, ich habe auch den obigen proxy_set_header verwendet, um gzip nicht zu akzeptieren.

Fehlt mir möglicherweise noch etwas?

kylehayes
quelle

Antworten:

15

Ihre Antwort hat wahrscheinlich einen anderen Inhaltstyp als in sub_filter_typesder Standardeinstellung definiert .

Referenz: http://nginx.org/r/sub_filter_types

VBart
quelle
24
Ich hatte kein proxy_set_header Accept-Encoding ""; Sie benötigen dies, um dem Backend mitzuteilen, dass in einer Antwort keine Komprimierung zulässig ist.
James T Snell
1
Die ursprüngliche Antwort sollte so bearbeitet werden, dass sie einen @ JamesTSnell-Kommentar enthält, ohne den die Antwort nutzlos ist.
HeadCode
7

James T Snell antwortete in einem Kommentar:

Ich hatte kein proxy_set_header Accept-Encoding ""; Sie benötigen dies, um dem Backend mitzuteilen, dass in einer Antwort keine Komprimierung zulässig ist.

Jan DB
quelle
0

Muss es sich in einem Standortblock befinden? vielleicht auch keine zitate zu match arg?

http://wiki.nginx.org/HttpSubModule

location / {   sub_filter      
      </head>   
      '</head><script
      language="javascript" src="$script"></script>';   
      sub_filter_once on;
}
nandoP
quelle