我有一个nginx服务器,似乎无法找到有关如何为CSS和JS文件发送Vary:Accept-Encoding标头的任何信息。有没有人有关于此的信息?
谢谢!
答案 0 :(得分:39)
这是来自nginx documentation。
gzip_vary syntax: gzip_vary on|off default: gzip_vary off context: http, server, location
启用
"Vary: Accept-Encoding"
的响应标头。请注意这一点 标头导致IE 4-6不会因为错误而缓存内容(请参阅2)。
如果你只是添加gzip_vary on;
那就应该做它的工作。
同时确保你有任何一个指令gzip,gzip_static或gunzip是活跃的。
答案 1 :(得分:30)
在您要设置的域/子域的server {
内,添加
gzip on;
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_types text/plain application/x-javascript text/xml text/css;
gzip_vary on;
保存文件并重新启动nginx。
答案 2 :(得分:1)
简单。在Nginx conf:
vim /etc/nginx/nginx.conf
在以下部分的底部附近添加以下内容:
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
取消注释gzip_vary on;
参数并重新启动或重新加载nginx服务:
service nginx restart
这应该可以解决问题。如果您运行的是旧版本的nginx,则可能需要启用gzip on;
,因为这是vary头工作所必需的。
我希望这会有所帮助。仅供参考,这适用于所有服务器/站点配置文件,除非在各自的服务器块中覆盖。 server {}
nginx,apache和IIS的源信息:https://www.maxcdn.com/blog/accept-encoding-its-vary-important/
答案 3 :(得分:0)
如果您已经尝试了其他答案并且仍然看到变化(例如,如果您使用GTMetrix测试页面速度),则以下内容可能有所帮助:
确保所有gzip_types也设置在/etc/nginx/nginx.conf http部分。
/ etc / nginx / sites-available / *中的服务器块是您可以设置vary头和gzip_types的地方,但是根据您的站点设置方式,您可能会在文件到达之前处理和返回文件。配置。
在/etc/nginx/nginx.conf中,您会找到一个' http'部分 - 在这里,还有一个gzip_types和gzip_vary。
对我来说 - CSS和JS是静态文件,在点击(wordpress)nginx站点可用文件之前提供服务(我前面有清漆)。
因此,将完整的gzip_types列表添加到nginx.conf中的http部分修复了我的问题。