¿Por qué parece que sub_filter no funciona cuando se usa junto con proxy_pass?

21

Dada la siguiente configuración 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 no responde correctamente partes de la respuesta. Una vez que elimino proxy_pass de la configuración, funciona correctamente. Muchas personas con este problema terminan teniendo compresión gzip desde el servidor ascendente. He verificado que mi servidor ascendente no tiene activada la codificación gzip para sus respuestas. Pero por si acaso, también he usado el proxy_set_header anterior para no aceptar gzip.

¿Hay potencialmente otra cosa que me falta?

kylehayes
fuente

Respuestas:

15

Su respuesta probablemente tenga otro tipo de contenido que el definido sub_filter_typespor defecto.

Referencia: http://nginx.org/r/sub_filter_types

VBart
fuente
25
No tenía proxy_set_header Accept-Encoding ""; necesitas eso para decirle al backend que la compresión no está permitida en una respuesta.
James T Snell
1
La respuesta original debe editarse para incluir el comentario @JamesTSnell, sin el cual la respuesta es inútil.
HeadCode
7

James T Snell lo respondió en un comentario:

No tenía proxy_set_header Accept-Encoding ""; necesitas eso para decirle al backend que la compresión no está permitida en una respuesta.

Jan DB
fuente
0

¿necesita estar dentro de un bloque de ubicación? Además, ¿tal vez no hay citas sobre el argumento del partido?

http://wiki.nginx.org/HttpSubModule

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