Étant donné la configuration suivante de 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 ne répond pas correctement aux parties de la réponse. Une fois que j'ai supprimé proxy_pass de la configuration, cela fonctionne correctement. Beaucoup de gens avec ce problème finissent par avoir une compression gzip à partir du serveur en amont. J'ai vérifié que mon serveur en amont n'a pas le codage gzip activé pour ses réponses. Mais juste au cas où, j'ai également utilisé le proxy_set_header ci-dessus pour ne pas accepter gzip.
Y a-t-il potentiellement quelque chose d'autre qui me manque?
Votre réponse a probablement un autre type de contenu que celui défini dans sub_filter_types
par défaut.
Référence: http://nginx.org/r/sub_filter_types
James T Snell y a répondu dans un commentaire:
Je n'avais pas proxy_set_header Accept-Encoding ""; vous en avez besoin pour indiquer au backend que la compression n'est pas autorisée dans une réponse.
doit-il être à l'intérieur d'un bloc de localisation? aussi, peut-être pas de citations sur match arg?
http://wiki.nginx.org/HttpSubModule
location / { sub_filter
</head>
'</head><script
language="javascript" src="$script"></script>';
sub_filter_once on;
}