Dlaczego sub_filter wydaje się nie działać, gdy jest używany w połączeniu z proxy_pass?


21

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?

Odpowiedzi:


15

Twoja odpowiedź prawdopodobnie ma inny typ treści niż sub_filter_typesdomyślnie zdefiniowany .

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


25
Nie miałem proxy_set_header Accept-Encoding ""; musisz to powiedzieć backendowi, że kompresja nie jest dozwolona w odpowiedzi.
James T Snell

1
Oryginalna odpowiedź powinna być edytowana w celu uwzględnienia komentarza @JamesTSnell, bez którego odpowiedź jest bezużyteczna.
HeadCode

7

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.


0

czy musi znajdować się w bloku lokalizacji? też, może nie ma cytatów na temat arg meczu?

http://wiki.nginx.org/HttpSubModule

location / {   sub_filter      
      </head>   
      '</head><script
      language="javascript" src="$script"></script>';   
      sub_filter_once on;
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.