web-dev-qa-db-fra.com

Comment puis-je vérifier que le module nginx gzip_static fonctionne?

Comment puis-je vérifier que nginx sert la version .gz des fichiers statiques, s'ils existent?

J'ai compilé nginx avec le module statique gzip, mais je ne vois aucune mention de la version .gz servie dans mes journaux. (J'ai minifié les fichiers global.js et global.css avec des versions .gz d'eux dans le même répertoire).

La partie pertinente de nginx.conf ressemble à ceci:

gzip  on;
gzip_static on;
gzip_http_version 1.0;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;

gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

Tout pointeur serait apprécié.

51
Rob Watson

Utilisez strace. Tout d'abord, vous devez détecter le PID du processus nginx:

# ps ax | grep nginx
25043 ?        Ss     0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
25044 ?        S      0:02 nginx: worker process

Ok, donc 25044 est le processus de travail. Maintenant, nous le traçons:

# strace -p 25044 2>&1 | grep gz
open("/var/www/css/ymax.css.gz", O_RDONLY|O_NONBLOCK) = 438
open("/var/www/css/patches/patch_my_layout.css.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/var/www/yaml/core/iehacks.css.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/var/www/js/koznazna5.js.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/var/www/css/ymax.css.gz", O_RDONLY|O_NONBLOCK) = 216

Comme vous pouvez le voir, il essaie de trouver des versions de fichiers .gz.

82
Milan Babuškov

Modifiez le contenu du fichier non compressé. Et puis touch les deux fichiers (simultanément — c'est-à-dire: dans la même instanciation de touch). Si lorsque vous chargez le fichier dans un navigateur (effacé du cache), vous obtenez le fichier non modifié, alors nginx a servi le fichier à cache statique gzippé.

Un moyen simple d'éviter "est-ce que je viens de récupérer le cache?" les soucis sont de récupérer à partir de la ligne de commande avec curl car curl ne cache pas.

19
mxcl

Je voudrais désactiver la compression automatique et enregistrer gzip_ratio:

http {
   gzip off;
   gzip_static on;

   log_format log_with_ratio "... $gzip_ratio ...";

   server {
      access_log /var/log/nginx/file.log log_with_ratio;
   }
}

Notez que vous pouvez remplacer gzip, gzip_static et access_log par niveau de serveur et d'emplacement.

17
Alexander Azarov

Il y a un indice que j'ai remarqué concernant l'en-tête de réponse ETag.

Si le fichier statique est servi par nginx, l'en-tête ressemble à ceci: ETag: "135a-BQhu6KL71dyeCXcVZme6ug", cependant, lorsque nginx compresse la réponse (via le module gzip), cela ressemble à ceci: ETag: W/"135a-BQhu6KL71dyeCXcVZme6ug" (remarquer W/).

Vous pouvez l'utiliser aussi bien que Content-Encoding: gzip pour distinguer les fichiers statiques simples, les fichiers statiques précompressés et les fichiers compressés à la volée.

1
Slava Fomin II