Подтвердить что ты не робот

Как проверить, работает ли модуль nginx gzip_static?

Как я могу проверить, что nginx служит .gz версии статических файлов, если они существуют?

Я скомпилировал nginx с статическим модулем gzip, но я не вижу упоминания о версии .gz, которая будет использоваться в моих журналах. (Я включил файлы global.js и global.css с их версиями .gz в том же каталоге).

Соответствующая часть nginx.conf выглядит так:

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;

Любые указатели будут оценены.

4b9b3361

Ответ 1

Используйте strace. Во-первых, вам нужно определить PID процесса 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

Итак, 25044 - это рабочий процесс. Теперь мы проследим его:

# 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

Как вы можете видеть, он пытается найти .gz версии файлов.

Ответ 2

Измените содержимое файла без gzip. И затем touch оба файла (одновременно - то есть: в том же экземпляре touch). Если при загрузке файла в браузере (кэширование) вы получаете неизменяемый файл, тогда nginx обслуживает файл с статическим кэшем-gzip.

Легкий способ избежать "я просто извлек кеш?" беспокойство заключается в извлечении из командной строки с помощью curl, поскольку curl не кэширует.

Ответ 3

Я бы отключил автоматическое сжатие и журнал 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;
   }
}

Обратите внимание, что вы можете переопределить gzip, gzip_static и access_log для каждого уровня сервера и местоположения.

Ответ 4

Есть некоторый намек, который я заметил относительно заголовка ответа ETag.

Если статический файл обслуживается nginx, заголовок выглядит следующим образом: ETag: "135a-BQhu6KL71dyeCXcVZme6ug", однако, когда nginx сжимает ответ (через gzip-модуль), он выглядит так: ETag: W/"135a-BQhu6KL71dyeCXcVZme6ug" (уведомление W/).

Вы можете использовать это, а также Content-Encoding: gzip, чтобы отличать простые статические файлы, предварительно сжатые статические файлы и файлы, сжатые на лету.

Ответ 5

Вы можете использовать инструменты Chrome Dev через вкладку Сеть, если вы включили столбец Content-Encoding (щелкните правой кнопкой мыши по столбцам, чтобы включить/отключить определенный контент в таблице):

Утилиты Chrome Dev с колонкой Content-Encoding включен скриншот

Ответ 6

Обычно я использую инструменты Chrome Dev и просматриваю размеры файлов для соответствующих файлов.