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

17

Considerando 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 às partes da resposta. Depois de remover proxy_pass da configuração, ele funciona corretamente. Muitas pessoas com esse problema acabam tendo compressão gzip do servidor upstream. Eu verifiquei que meu servidor upstream não tem a codificação gzip ativada para suas respostas. Mas apenas no caso, eu também usei o proxy_set_header acima para não aceitar o gzip.

Há algo potencialmente em falta?

    
por kylehayes 18.10.2013 / 19:25

3 respostas

10

Sua resposta provavelmente tem outro tipo de conteúdo do que o definido em sub_filter_types por padrão.

Referência: link

    
por 27.10.2013 / 13:48
3

James T Snell respondeu em um comentário:

Eu não tenho proxy_set_header Accept-Encoding ""; você precisa disso para informar ao backend que a compressão não é permitida em uma resposta.

    
por 16.01.2018 / 14:39
0

precisa estar dentro de um bloco de localização? também, talvez sem citações no match arg?

link

location / {   sub_filter      
      </head>   
      '</head><script
      language="javascript" src="$script"></script>';   
      sub_filter_once on;
}
    
por 27.10.2013 / 01:36

Tags