Dada a seguinte configuração do 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 não responde adequadamente partes da resposta. Depois de remover o proxy_pass da configuração, ele funciona corretamente. Muitas pessoas com esse problema acabam tendo compressão gzip no servidor upstream. Eu verifiquei que meu servidor upstream não tem a codificação gzip ativada para suas respostas. Mas, por precaução, também usei o proxy_set_header acima para não aceitar o gzip.
Existe potencialmente algo mais que estou perdendo?
James T Snell respondeu em um comentário:
Eu não tinha proxy_set_header Accept-Encoding ""; você precisa informar ao back-end que a compactação não é permitida em uma resposta.
fonte
ele precisa estar dentro de um bloco de localização? Além disso, talvez sem aspas no jogo arg?
http://wiki.nginx.org/HttpSubModule
fonte