被压缩了两次的响应
浏览器下载文件报 net::ERR_CONTENT_DECODING_FAILED,抓包看响应头有两个 Content-Encoding: gzip,或者 Content-Encoding: gzip 而内容是明文。
原因是上游(Node、Python 应用、或者另一个 nginx)已经压缩过,反向代理这层又根据 Content-Type 压了一次。压缩过的字节流再压,语义就错了。
修法二选一:上游关掉压缩,交给边缘统一做;或者 nginx 侧对已经带 Content-Encoding 的响应跳过压缩。用 proxy_set_header Accept-Encoding ""; 让上游不压缩,是最省事的做法——代价是回源流量变大,内网无所谓。