gzip_vary

Директива `gzip_vary` управляет тем, включается ли заголовок ответа `Vary: Accept-Encoding` для контента, сжатого с помощью gzip. — NGINX HTTP Core

gzip_vary
httpserverlocation
Синтаксисgzip_vary on | off;
По умолчаниюoff
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументыflag

Описание

Директива `gzip_vary` в NGINX используется для включения или отключения добавления HTTP-заголовка `Vary: Accept-Encoding` в ответах, где применяется сжатие gzip. Этот заголовок важен для поведения кэширования у прокси и CDN, так как он указывает, что ответ может различаться в зависимости от заголовка запроса `Accept-Encoding`, отправляемого клиентом. Когда `gzip_vary` установлен в `on`, это гарантирует, что агенты пользователей, поддерживающие разные кодировки контента, будут получать корректно закэшированные версии ресурсов в зависимости от поддерживаемой ими кодировки. При использовании `gzip_vary`, если gzip включён и эта директива активирована, NGINX добавит заголовок `Vary: Accept-Encoding` в ответ. Это позволяет промежуточным системам кэширования понимать, что содержимое ответа может отличаться в зависимости от того, принимает ли клиент данные, сжатые gzip. Если установлено в `off`, этот заголовок добавляться не будет, что может привести к нежелательным эффектам кэширования, особенно для пользователей, которые не запрашивают сжатие gzip. Эту директиву можно определить в различных контекстах, включая `http`, `server` и `location`, что делает её гибкой для разных конфигураций. Это особенно полезно, когда разные типы клиентов могут требовать разных представлений одного и того же ресурса в зависимости от их возможностей по поддержке кодировок.

Пример конфига

http {
    gzip on;
    gzip_vary on;
}

Убедитесь, что ваш механизм кэширования (например, proxy или CDN) распознаёт заголовок `Vary`.

Установка `gzip_vary` в положение `on` без включения gzip может ввести в заблуждение, так как заголовок будет отправляться без какого-либо эффекта.