Распределенная и кэшированная псевдопотоковая передача MP4 (поиск) с Nginx

Я пытался настроить как минимум 2 сервера с nginx (origin + edge). оба скомпилированы с модулем mp4. В источнике хранятся все мои mp4-файлы. Edge настроен со всеми элементами кэширования (см. ниже), которые работают должным образом, каждый запрос mp4-файла во второй раз обслуживается граничным кешем без исходного трафика.

Но я хочу иметь возможность поиска в файле. Функционал исходит от mp4-модуля. Просто добавьте параметр запроса «? start = 120», чтобы указать nginx обслуживать mp4-контент, начиная с метки времени 120 секунд. Это отлично работает с прямым запросом происхождения. Но как только я включу mp4-модуль в кэш-локации nginx, запрос будет 404.

nginx.conf @ origin:

server {
  listen       80;
  server_name  localhost;
  root         /usr/share/nginx/www;
  location ~ \.mp4$ {
    mp4;
    expires max;
  }
}

nginx.conf @ edge:

proxy_cache_path /usr/share/nginx/cache levels=2:2 keys_zone=icdn_cache:10m inactive=7d max_size=2g;
proxy_temp_path /usr/share/nginx/temp;
proxy_ignore_headers X-Accel-Expires Cache-Control Set-Cookie;
log_format cache '[$time_local] Cache: $upstream_cache_status $upstream_addr $upstream_response_time $status $bytes_sent $proxy_add_x_forwarded_for $request_uri';
access_log /usr/local/nginx/logs/cache.log cache;

upstream origin {
  server ;
}
server {
  listen       80;
  server_name  localhost;

  location ~ \.mp4$ {
    mp4;
    proxy_cache icdn_cache;
    proxy_pass http://origin;
    proxy_cache_key $uri;
  }
}

Я также пробовал:

location / {
  location ~ \.mp4$ { mp4; }
  proxy_cache icdn_cache;
  proxy_pass http://origin;
  proxy_cache_key $uri;
}

​​Есть ли способ заставить кешированные mp4-файлы работать с функцией поиска mp4-модуля?

8
задан kraiz 5 April 2012 в 08:15
поделиться