Одним из самых эффективных способов ускорить работу веб-сервера Nginx является включение GZIP-сжатия. GZIP обеспечивает сжатие без потерь, что означает, что исходные данные можно полностью восстановить при распаковке. Сжатие основано на алгоритме DEFLATE, который сочетает в себе алгоритмы LZ77 и Хаффмана.
Большинство современных клиентов и серверов поддерживают GZIP. Когда браузер или другой клиент, совместимый с GZIP, запрашивает ресурс у сервера с поддержкой GZIP, сервер сжимает ответ перед отправкой. Это позволяет значительно уменьшить объем передаваемых данных и ускорить загрузку страниц.
Пример конфигурации для включения GZIP-сжатия в Nginx. Откройте основной файл конфигурации /etc/nginx/nginx.conf
и добавьте следующие директивы в блок http
:
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