Nginx
為什麼 sub_filter 與 proxy_pass 結合使用時似乎不起作用?
給定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 “”; 你需要告訴後端在響應中不允許壓縮。