2012-04-05 15 views
8

Tôi đã cố gắng thiết lập ít nhất 2 máy chủ với nginx (nguồn gốc + cạnh). cả hai được biên dịch với mô-đun mp4. Nguồn gốc chứa tất cả các tệp mp4 của tôi. Edge được cấu hình với tất cả bộ nhớ đệm (xem bên dưới) hoạt động như mong đợi, mỗi lần yêu cầu tập tin mp4 lần thứ hai được phục vụ bởi bộ nhớ đệm cạnh mà không có lưu lượng gốc.Phân phối và lưu trữ MP4 PseudoStreaming (tìm kiếm) với Nginx

Nhưng tôi muốn có thể tìm kiếm trong tệp. Chức năng này đến từ mô-đun mp4. Chỉ cần thêm truy vấn-param "? Bắt đầu = 120" cho nginx để phục vụ nội dung mp4 bắt đầu với dấu thời gian 120 giây. Điều này làm việc tốt với nguồn gốc trực tiếp yêu cầu. Nhưng ngay sau khi tôi cho phép mp4-mô-đun trong bộ nhớ đệm-vị trí của nginx, yêu cầu sẽ được 404.

nginx.conf @ xứ:

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

nginx.conf @ cạnh:

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; 
    } 
} 

tôi cũng đã cố gắng:

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

có cách nào để làm cache mp4-file làm việc với việc tìm kiếm chức năng của mp4-mô-đun?

Trả lời

0

Bạn phải sử dụng proxy_store. proxy_cache sẽ tạo nhiều tệp cho mỗi yêu cầu ?start=xxxx.

Để cho mô-đun mp4 tìm kiếm tệp bạn cần có toàn bộ phim. proxy_store sẽ tạo một bản sao trên máy chủ bộ nhớ cache.

+1

Điều đó không đúng vì người dùng đang sử dụng 'proxy_cache_key $ uri;' proxy_cache sẽ sử dụng $ uri (thay vì $ request_uri) làm khóa, $ uri không bao gồm thông số truy vấn. Điều này thực sự có thể gây ra một vấn đề, nếu yêu cầu đầu tiên có bắt đầu = 120 và nginx lưu trữ các tập tin với 120 giây đầu tiên mất tích, nhưng đó là một vấn đề khác nhau –

0

proxy_cache là một phần của mô-đun proxy. Hiện tại bạn không thể sử dụng mô-đun nginx mp4 với proxy, nó chỉ hoạt động đối với các tệp tĩnh, chính là nó.