Por que o sub_filter parece não funcionar quando usado em conjunto com o proxy_pass?

21

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?

kylehayes
fonte

Respostas:

15

Sua resposta provavelmente tem outro tipo de conteúdo que não o definido sub_filter_typespor padrão.

Referência: http://nginx.org/r/sub_filter_types

VBart
fonte
25
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.
James T Snell
1
A resposta original deve ser editada para incluir o comentário @JamesTSnell, sem o qual a resposta é inútil.
HeadCode
7

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.

Jan DB
fonte
0

ele precisa estar dentro de um bloco de localização? Além disso, talvez sem aspas no jogo arg?

http://wiki.nginx.org/HttpSubModule

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