nginx 反向代理缓存包含 gzip 内容和非 gzip 内容

nginx 反向代理缓存包含 gzip 内容和非 gzip 内容

我正在使用 ngnix + Passenger 开发 rails web 服务,并在 nginx 中使用反向代理缓存。它运行良好,速度非常快。问题是有些客户端不支持 gzip,而有些则支持。

我发现 nginx 会缓存 gzip 内容,因此如果支持 gzip 的客户端先请求,然后不支持 gzip 的客户端请求,那么即使客户端发送了标头“Accept-Encoding”:“”,服务器仍然会返回 gzip 内容。

gzip  on;
gzip_http_version 1.0;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/css text/javascript application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss;

您是否必须通过组合 request_uri 和标头“Accept-Encoding”来分别缓存它们?

答案1

这可能是一个已修复的错误。至少我没有在 0.8.54 中观察到此行为。如果您的 nginx 不是最新版本,请尝试升级它。

答案2

你应该添加$http_accept_encoding你的缓存键或使用gunzip 模块

相关内容