我正在使用Nginx作为反向代理并缓存来自上游服务器的代理响应。
因此,我需要在此缓存文件中添加Content-Length标头,然后再发送给客户端。
我尝试将 $ upstream_response_length 变量添加到location指令中,但是它不起作用。
location /files/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_buffering on;
chunked_transfer_encoding off;
##PROXY CACHE CONFIG
proxy_cache my_cache;
add_header X-Proxy-Cache $upstream_cache_status;
proxy_ignore_headers Cache-Control;
proxy_cache_valid any 30m;
add_header Content-Length $upstream_response_length;
proxy_pass http://upstream_server;
}
我该怎么做?
答案 0 :(得分:0)
如here所述:
nginx删除Content-Length标头(并在可能的情况下使用分块) 如果未知处理后的结果长度。有时候是这样的 例如如果您使用的是gzip,ssi,子模块或附加模块。
因此您可能正在使用其中之一。
我相信NGINX“知道”缓存页面的内容长度,因此默认情况下它应该为它们发送Content-Length
,除非您使用这些模块,否则 。