Я пытаюсь использовать ngx_http_slice_module с кешированием, но получаю странные результаты. Всякий раз, когда я пытаюсь передать содержимое, например .mp4 или .m4v, модуль ngx_http_slice_module начинает создавать неправильные диапазоны, что по понятным причинам вызывает ошибки в восходящем потоке, что приводит к некорректной работе потоковой передачи. В частности, NGINX, похоже, полагает, что содержимое больше, чем оно есть, в результате чего конечная часть диапазона больше, чем размер исходного файла. Восходящий поток предоставляет заголовки Content-Length, Content-Type, а также заголовки Content-Range и Accept-Ranges, если в запросе указан заголовок Range. Отключение параметра среза в параметре конфигурации решает проблему, НО кеширование в этой ситуации никогда не происходит. В чем может быть проблема? Зависит ли срез от какого-то заголовка voodoo magi c? Заранее благодарим вас за ваши предложения :)
Вот конфигурация местоположения:
location /content/ {
proxy_pass http://127.0.0.1:8000/content/;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_pass_header Server;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
proxy_cache my_cache;
proxy_cache_lock on;
proxy_cache_lock_timeout 0s;
proxy_cache_lock_age 200s;
proxy_cache_key "$authorized|$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri|$slice_range|$preferences";
proxy_cache_valid 200 10m;
slice 1m;
proxy_set_header Range $slice_range;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
proxy_cache_background_update on;
add_header X-Cache-Status $upstream_cache_status;
}