如何将Content-Length标头添加到缓存的文件?

时间:2019-09-17 04:23:59

标签: nginx caching http-content-length

我正在使用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;

}

我该怎么做?

1 个答案:

答案 0 :(得分:0)

here所述:

  

nginx删除Content-Length标头(并在可能的情况下使用分块)   如果未知处理后的结果长度。有时候是这样的   例如如果您使用的是gzip,ssi,子模块或附加模块。

因此您可能正在使用其中之一。

我相信NGINX“知道”缓存页面的内容长度,因此默认情况下它应该为它们发送Content-Length,除非您使用这些模块,否则