设置变化:接受编码标头(nginx)

时间:2011-07-09 21:45:37

标签: nginx

我有一个nginx服务器,似乎无法找到有关如何为CSS和JS文件发送Vary:Accept-Encoding标头的任何信息。有没有人有关于此的信息?

谢谢!

4 个答案:

答案 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部分修复了我的问题。