Кто же сильнее 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