Nginx модуль среза приводит к неправильным диапазонам - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь использовать 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;
}
...