web-dev-qa-db-fra.com

Set Vary: Accept-Encoding Header (nginx)

J'ai un serveur nginx et je ne trouve aucune information sur l'envoi des en-têtes Vary: Accept-Encoding pour les fichiers CSS et JS. Est-ce que quelqu'un a des infos à ce sujet?

Merci!

28
Mitchell

Cela provient de nginx documentation .

gzip_vary
syntax: gzip_vary on|off
default: gzip_vary off
context: http, server, location

Active l'en-tête de réponse de "Vary: Accept-Encoding". Notez que ceci En-tête, IE 4-6 ne met pas le contenu en cache en raison d'un bogue (voir 2 ).

Là, si vous ajoutez simplement gzip_vary on;, il devrait faire son travail. 

Assurez-vous également que l'une des directives gzip, gzip_static ou gunzip est active.

39
Atanas Markov

Dans le server { du domaine/sous-domaine que vous souhaitez définir, ajoutez

    gzip on;
    gzip_min_length  1100;
    gzip_buffers  4 32k;
    gzip_types    text/plain application/x-javascript text/xml text/css;
    gzip_vary on;

Enregistrez le fichier et redémarrez nginx.

30
PJunior

Simple. Dans Nginx conf:

vim /etc/nginx/nginx.conf

Ajoutez ce qui suit près du bas sous la section: 

    ##
    # 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;

Décommentez simplement le paramètre gzip_vary on; et redémarrez ou rechargez le service nginx:

service nginx restart

Cela devrait résoudre le problème. Si vous utilisez une ancienne version de nginx, vous devrez peut-être activer gzip on;, car cela est nécessaire pour que l'en-tête de variante fonctionne.

J'espère que ça aide. Pour votre information, ceci s’applique à tous les fichiers de configuration serveur/site, à moins d’être écrasé dans leurs propres blocs de serveur respectifs. server {}

Informations sur la source pour nginx, Apache et IIS: https://www.maxcdn.com/blog/accept-encoding-its-vary-important/

1
Tony-Caffe

Si vous avez essayé les autres réponses et constatez toujours la désactivation variable (par exemple, si vous testez la vitesse de votre page à l'aide de GTMetrix), voici ce qui pourrait vous aider:

Assurez-vous que tous vos gzip_types sont également définis dans la section http /etc/nginx/nginx.conf.

Le bloc serveur dans/etc/nginx/sites-available/* est un emplacement où vous pouvez définir l'en-tête de variation et les gzip_types. Toutefois, en fonction de la configuration de votre site, vous pouvez éventuellement traiter et renvoyer des fichiers .

Dans /etc/nginx/nginx.conf, vous trouverez une section 'http' - ici, il y a aussi un gzip_types et un gzip_vary.

Pour moi - CSS et JS sont des fichiers statiques et étaient servis avant de frapper le fichier (wordpress) nginx sites-available (j’ai du vernis devant).

Ainsi, l'ajout de la liste complète de gzip_types à la section http de nginx.conf a résolu mon problème.

0
Dave Hilditch