Sua resposta provavelmente tem outro tipo de conteúdo do que o definido em sub_filter_types
por padrão.
Referência: link
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?
Sua resposta provavelmente tem outro tipo de conteúdo do que o definido em sub_filter_types
por padrão.
Referência: link
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.
precisa estar dentro de um bloco de localização? também, talvez sem citações no match arg?
location / { sub_filter
</head>
'</head><script
language="javascript" src="$script"></script>';
sub_filter_once on;
}