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?
Đ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 –