Здравствуйте!

Меня интересует возможность nginx, позволяющая проксировать запросы на mp4 к бекэнду, чтобы при этом не было необходимости выкачивать на бекэнд весь mp4 (файл может быть очень большим), а было лишь достаточно послать range-запрос на необходимые данные, их закешировать и отдавать клиенту. Для тестирования данной возможности я создал следующую конфигурацию (привожу кусок):

location / {
        proxy_pass http://someIP$uri;

        proxy_set_header  Host              example.net
        proxy_set_header  X-Real-IP        $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;

        slice 1m;
        proxy_set_header        Range   $slice_range;
        proxy_cache_valid       200 206 1d;
        proxy_cache     irlem;
        proxy_cache_key $uri$slice_range;
}

Все работает как и запланировано - если я шлю с клиента на nginx Range-запрос, nginx и клиент получат необходимую часть данных, выравненных по размеру slice. Однако, хотелось бы получать порцию необходимых данных. использую не только Range-запросы, но и явно указывая в URI момент начала (и возможно конца) видео. Например, чтобы при запросе к nginx вида http://mynginx.server/test.mp4?start=40 хотелось бы что nginx преобразовывал start=40 в соответствующий Range-запрос к бэкенду и выкачивал только необходимые данные. Я добавил в конфигурацию своего location параметр mp4 для этого, однако, как выяснилось, mp4 не совместим с proxy_pass. Подскажите, кто-то реализовывал на nginx что-то подобное, и если реализовал то как? Или единственный путь, это писать данную возможность самому (на lua, ngscript, своим модулем, etc)?

С уважением,
Коростелев Анатолий

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить