我正在使用 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 模块。