2012-04-05 17 views
8

Ich habe versucht, mindestens 2 Server mit Nginx (Herkunft + Rand) einrichten. beide kompiliert mit dem mp4 -Modul. Der Ursprung enthält alle meine mp4-Dateien. Edge ist mit all dem Caching-Zeug (siehe unten) konfiguriert, das wie erwartet funktioniert, jede MP4-Dateianforderung wird ein zweites Mal vom Edge-Cache ohne Herkunftsverkehr bedient.Distributed & Cached MP4 PseudoStreaming (suchen) mit Nginx

Aber ich möchte in der Datei suchen können. Die Funktionalität kommt vom mp4-Modul. Fügen Sie einfach den Abfrage-Parameter "? Start = 120" an und teilt nginx mit, dass er den mp4-Inhalt beginnend mit dem Zeitstempel 120sec ausgibt. Dies funktioniert gut mit direkt angeforderter Herkunft. Aber sobald ich mp4-Modul in der Caching-Position des nginx ermöglichen, wird die Anforderung sein 404.

nginx.conf @ Herkunft:

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

nginx.conf @ Rand:

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 <origin-domain>; 
} 
server { 
    listen  80; 
    server_name localhost; 

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

ich auch versucht:

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

gibt es eine Möglichkeit gecached mp4-Dateien arbeiten mit der sucht-Funktion von mp4-Modul zu machen?

Antwort

0

Sie müssen proxy_store verwenden. proxy_cache erstellt viele Dateien für jede ?start=xxxx Anfrage.

Um ein mp4-Modul in Dateien suchen zu lassen, benötigen Sie den ganzen Film. proxy_store macht einen Spiegel auf dem Cache-Server.

+1

Das stimmt nicht, weil der Benutzer 'proxy_cache_key $ uri;' Der proxy_cache verwendet $ uri (statt $ request_uri) als Schlüssel, $ uri enthält die Abfrageparameter nicht. Dies kann tatsächlich ein Problem verursachen, wenn die erste Anfrage hat? Start = 120 und Nginx zwischengespeichert die Datei mit den ersten 120 Sekunden fehlt, aber das ist ein anderes Problem –

0

proxy_cache ist Teil des Proxy-Moduls. Momentan können Sie nicht nginx mp4 Modul mit Proxy verwenden, es funktioniert nur für statische Dateien, das ist es.