Nginx

為什麼 sub_filter 與 proxy_pass 結合使用時似乎不起作用?

  • April 5, 2022

給定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 沒有正確響應部分響應。一旦我從配置中刪除 proxy_pass,它就可以正常工作。很多有這個問題的人最終都會從上游伺服器進行 gzip 壓縮。我已經驗證我的上游伺服器沒有為它的響應打開 gzip 編碼。但以防萬一,我還使用了上面的 proxy_set_header 來不接受 gzip。

我可能還缺少其他東西嗎?

sub_filter_types您的響應可能具有預設情況下定義的其他內容類型。

參考: http: //nginx.org/r/sub_filter_types

James T Snell 在評論中回答了這個問題:

我沒有 proxy_set_header Accept-Encoding “”; 你需要告訴後端在響應中不允許壓縮。

引用自:https://serverfault.com/questions/547060