Perché sub_filter sembra non funzionare quando utilizzato insieme a proxy_pass?


21

Data la seguente configurazione di 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 non risponde correttamente a parti della risposta. Una volta rimosso proxy_pass dalla configurazione, funziona correttamente. Molte persone con questo problema finiscono per avere la compressione gzip dal server upstream. Ho verificato che il mio server upstream non ha la codifica gzip attivata per le sue risposte. Ma per ogni evenienza, ho usato anche proxy_set_header sopra per non accettare gzip.

C'è potenzialmente qualcos'altro che mi manca?

Risposte:


15

La tua risposta probabilmente ha un tipo di contenuto diverso da quello definito sub_filter_typesper impostazione predefinita.

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


25
Non avevo proxy_set_header Accept-Encoding ""; è necessario per dire al backend che la compressione non è consentita in una risposta.
James T Snell,

1
La risposta originale dovrebbe essere modificata per includere il commento di @JamesTSnell, senza il quale la risposta è inutile.
HeadCode

7

James T Snell ha risposto in un commento:

Non avevo proxy_set_header Accept-Encoding ""; è necessario per dire al backend che la compressione non è consentita in una risposta.


0

deve essere all'interno di un blocco di posizione? inoltre, forse non ci sono citazioni sulla partita arg?

http://wiki.nginx.org/HttpSubModule

location / {   sub_filter      
      </head>   
      '</head><script
      language="javascript" src="$script"></script>';   
      sub_filter_once on;
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.