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

设置变量:接受编码头(nginx),nginx,Nginx,我有一个nginx服务器,似乎找不到关于如何发送Vary:Accept CSS和JS文件的编码头的任何信息。有人知道这方面的信息吗 谢谢 这是来自nginx的 启用的响应标题“Vary:Accept Encoding”。请注意 标头导致IE 4-6由于错误而不缓存内容(请参阅) 如果你只添加gzip\u,你就可以改变它应该完成它的工作 还要确保gzip、gzip_static或gunzip指令中的任何一个处于活动状态。在要设置它的域/子域的服务器{中,添加 gzip on; gz

我有一个nginx服务器,似乎找不到关于如何发送Vary:Accept CSS和JS文件的编码头的任何信息。有人知道这方面的信息吗

谢谢

这是来自nginx的

启用
的响应标题“Vary:Accept Encoding”
。请注意 标头导致IE 4-6由于错误而不缓存内容(请参阅)

如果你只添加
gzip\u,你就可以改变它应该完成它的工作


还要确保gzip、gzip_static或gunzip指令中的任何一个处于活动状态。

在要设置它的域/子域的
服务器{
中,添加

    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。

Simple。在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\u vary on;
参数并重新启动或重新加载nginx服务:

service nginx restart
这应该可以解决问题。如果您运行的是旧版本的nginx,您可能需要在;
上启用
gzip,因为这是vary头工作所必需的

我希望这有帮助。仅供参考,这适用于所有服务器/站点配置文件,除非在各自的服务器块中被覆盖。
server{}


nginx、apache和IIS的源信息:

如果您已经尝试了其他答案,但仍然没有找到答案(例如,如果您正在使用GTMetrix测试页面速度),以下内容可能会有所帮助:

确保在/etc/nginx/nginx.conf http部分中也设置了所有gzip_类型

/etc/nginx/sites available/*中的服务器块是一个可以设置vary header和gzip_类型的地方,但根据您的站点设置,您可能会在文件到达配置位之前处理和返回文件

在/etc/nginx/nginx.conf中,您会发现一个“http”部分——在这里,还有一个gzip_类型和gzip_变量

对我来说,CSS和JS是静态文件,在访问(wordpress)nginx站点可用文件(我前面有varnish)之前就已经提供了


因此,在nginx.conf的http部分添加gzip_类型的完整列表修复了我的问题。

据我所知,这是唯一正确的答案。gzip_类型是这里的关键,因为默认值只是text/html,因此不会为不同的内容类型启用vary。在我的nginx服务器上的vhost文件中工作得很好。谢谢!这应该是回答正确。gzip_类型应该是未注释的。正如其他人所建议的那样,只有gzip_变化是不够的。我认为这不是正确的答案-至少,不是单独的,可能不是所有的nginx版本(我不知道).gzip_vary单独启用gzip(如果禁用),但将保留默认的gzip_类型,并且不会为不同于默认文本/html mimetype的资源启用vary。(在nginx 1.4.6上测试)@AlanFranzoni这个问题与启用gzip或使其编码其他内容类型无关,只是关于添加vary头。@jbg我想您误解了vary的用途,vary通常与压缩一起使用(请检查)。如果gzip和vary没有任何关系,为什么nginx选项会被称为gzip_vary?我完全理解vary HTTP头的用途。我的观点是,问题并不是问如何打开gzip压缩(他们很可能已经打开了),你可以说一个直接回答确切问题的答案(相当狭窄)提出的问题是“答案不正确”是荒谬的。我确实测试了答案。我已经正确设置了gzip,包括内容类型,我来这里是想了解如何发送“Vary:Accept Encoding”标题。这个答案完美地回答了前面提到的问题,大概提问者也同意了,因为他们接受了。禁用gzip_类型会带来更多问题。你能帮我弄清楚你做了什么吗?我在GTMetric上也看到了同样的事情,我也在使用wordpress,但我总是看到我在这个指标上得分很低。你怎么知道你能解决它吗?
service nginx restart