Кто же сильнее Cache-Control или X-Accel-Expires?
Иван
nginx на kinetiksoft.com
Чт Апр 20 17:17:07 UTC 2017
Здравствуйте!
Есть конфиг бэкэнда, вот его кусочек:
location ~ \.m3u8$ {
expires -1;
add_header "X-Accel-Expires" "100"
}
Как следует из русской и английской документации:
http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_cache_valid
(кстати, как делать красивые короткие ссылки на документацию, которыми
оперирует в этом списке рассылки команда nginx?)
> Если в заголовке нет поля “X-Accel-Expires”, параметры кэширования
> определяются по полям заголовка “Expires” или “Cache-Control”.
То есть можно предположить, что приоритет у X-Accel-Expires.
Но нет. Как показывает моя практика и, например, этот вопрос:
https://serverfault.com/questions/641367/nginx-using-x-accel-expires-with-cache-control
Приоритет имеет Cache-control. То есть в такой конфигурации на фронтэнде:
location ^~ /video/ {
proxy_buffer_size 16k;
proxy_buffers 32 16k;
proxy_cache video;
proxy_cache_lock on;
proxy_cache_use_stale updating;
proxy_cache_key "$proxy_host$uri";
proxy_pass http://backend;
}
m3u8 файлы, проходящие через этот локейшен на приведенный выше локейшен
бэкэнда кешироваться не будут. Ситуацию спасает только
proxy_ignore_headers Expires Cache-Control;
Подскажите, пожалуйста, где ошибка: в nginx, документации или моём понимании
того или другого?
С уважением, Иван.
Подробная информация о списке рассылки nginx-ru