Alt_filtre, proxy_pass ile birlikte kullanıldığında neden çalışmıyor?


21

Aşağıdaki nginx yapılandırması göz önüne alındığında:

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 "";
    }
}

Alt_filtre yanıtın bazı kısımlarını düzgün yanıtlamıyor. Bir kez proxy_pass yapılandırmasından kaldırmak, düzgün çalışıyor. Bu sorunla ilgili birçok kişi, yukarı akış sunucusundan gzip sıkıştırmasına sahip oluyor. Akış yukarı sunucumun yanıtları için açık gzip kodlaması olmadığını doğruladım. Ancak, her ihtimale karşı, gzip'i kabul etmemek için yukarıdaki proxy_set_header'ı da kullandım.

Potansiyel olarak kaçırdığım başka bir şey var mı?

Yanıtlar:


15

Yanıtınız muhtemelen sub_filter_typesvarsayılan olarak tanımlandığından farklı bir içerik türüne sahip .

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


25
Proxy_set_header Kabul Et Kodlamam ""; arka uca bir yanıtta sıkıştırmaya izin verilmediğini söylemek için buna ihtiyacınız vardır.
James T Snell

1
Orijinal cevap @JamesTSnell yorumunu içerecek şekilde düzenlenmelidir, bu cevaplar yararsızdır.
HeadCode

7

James T Snell bir yorumda cevap verdi:

Proxy_set_header Kabul Et Kodlamam ""; arka uca bir yanıtta sıkıştırmaya izin verilmediğini söylemek için buna ihtiyacınız vardır.


0

bir konum bloğunun içinde olması gerekir mi? Ayrıca, belki maç arg hiç tırnak?

http://wiki.nginx.org/HttpSubModule

location / {   sub_filter      
      </head>   
      '</head><script
      language="javascript" src="$script"></script>';   
      sub_filter_once on;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.