Biorąc pod uwagę następującą konfigurację 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 nie reaguje poprawnie na części odpowiedzi. Po usunięciu proxy_pass z konfiguracji działa poprawnie. Wielu ludzi z tym problemem kończy kompresja gzip z serwera nadrzędnego. Sprawdziłem, czy mój serwer nadrzędny nie ma włączonego kodowania gzip dla swoich odpowiedzi. Ale na wszelki wypadek użyłem również proxy_set_header powyżej, aby nie akceptować gzip.
Czy potencjalnie czegoś brakuje?
James T Snell odpowiedział na to w komentarzu:
Nie miałem proxy_set_header Accept-Encoding ""; musisz to powiedzieć backendowi, że kompresja nie jest dozwolona w odpowiedzi.
źródło
czy musi znajdować się w bloku lokalizacji? też, może nie ma cytatów na temat arg meczu?
http://wiki.nginx.org/HttpSubModule
źródło