Одним из самых эффективных способов ускорить работу веб-сервера Nginx является включение GZIP-сжатия. GZIP обеспечивает сжатие без потерь, что означает, что исходные данные можно полностью восстановить при распаковке. Сжатие основано на алгоритме DEFLATE, который сочетает в себе алгоритмы LZ77 и Хаффмана.
Большинство современных клиентов и серверов поддерживают GZIP. Когда браузер или другой клиент, совместимый с GZIP, запрашивает ресурс у сервера с поддержкой GZIP, сервер сжимает ответ перед отправкой. Это позволяет значительно уменьшить объем передаваемых данных и ускорить загрузку страниц.
Пример конфигурации для включения GZIP-сжатия в Nginx. Откройте основной файл конфигурации /etc/nginx/nginx.conf и добавьте следующие директивы в блок http:
http {
...
gzip on;
gzip_min_length 500;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/javascript application/javascript application/x-javascript text/xml application/xml application/xml+rss application/json;
gzip_disable "msie6";
gzip_comp_level 6;
gzip_buffers 16 8k;
...
}gzip — включает сжатие GZIP на сервере.
gzip_min_length — устанавливает минимальный размер ответа, для которого будет применяться сжатие. По умолчанию значение равно 20 байтам, но имеет смысл установить большее значение (например, 500 байт), так как сжатие слишком маленьких файлов может создать ненужную нагрузку на процессоры сервера и клиента.
gzip_vary — добавляет заголовок Vary: Accept-Encoding в ответ сервера. Это позволяет кэшировать как сжатые, так и несжатые версии одного ресурса в зависимости от того, поддерживает ли клиент GZIP-сжатие.
gzip_proxied — определяет, нужно ли сжимать ответы для проксированных запросов в зависимости от их содержимого. Запрос считается проксированным, если в его заголовке присутствует поле Via. Можно указать несколько условий для применения сжатия:
Параметры
gzip_proxied
off отключает сжатие для всех проксированных запросов.
expiredразрешает сжатие, если в заголовке ответа есть поле Expires, запрещающее кэширование.
no-cacheсжатие разрешено, если в заголовке ответа есть поле Cache-Control с параметром no-cache.
no-storeсжатие разрешено, если в заголовке ответа есть поле Cache-Control с параметром no-store.
privateразрешает сжатие, если в заголовке ответа есть поле Cache-Control с параметром private.
no_last_modifiedразрешает сжатие, если в заголовке ответа отсутствует поле Last-Modified.
no_etagразрешает сжатие, если в заголовке ответа нет поля ETag.
authсжатие разрешено, если в заголовке запроса есть поле Authorization.
anyразрешает сжатие для всех проксированных запросов без ограничений.
gzip_typesпо умолчанию включено сжатие для ответов типа текст. В данном параметре можно перечислить все необходимые типы ответов.
gzip_disableзапрещает для перечисленных параметров заголовка User-Agent сжатие. В данном примере для Internet Explorer 6 сжатие применяться не будет, так как данный браузер не умеет принимать сжатые ответы.
gzip_types — задает список типов MIME, для которых будет применяться сжатие. По умолчанию GZIP включен для ответов типа text/*. В данном примере сжатие включено для текстовых файлов, CSS, JavaScript и JSON.
gzip_disable — отключает сжатие для определенных клиентов. В данном примере сжатие отключено для браузера Internet Explorer 6 (определяется по значению User-Agent), так как этот браузер не поддерживает работу с GZIP-ответами.
gzip_comp_level — устанавливает уровень сжатия. Рекомендуемое значение — 6, так как оно обеспечивает баланс между скоростью сжатия и эффективностью (по умолчанию уровень сжатия равен 1, а максимальный — 9).
gzip_buffers — задает количество и размер буферов для хранения сжатых данных перед отправкой клиенту. В данном случае установлено 16 буферов по 8К.
Мета информация
Область:: 00 Nginx
Родитель:: GZIP
Источник::
Автор::
Создана:: 2024-04-07