nginx(オリジン+エッジ)で少なくとも2台のサーバーをセットアップしようとしました。どちらもmp4モジュールでコンパイルされています。原点には、すべての mp4 ファイルが保持されます。Edge は、期待どおりに機能するすべてのキャッシング要素 (以下を参照) で構成され、2 回目の各 mp4 ファイル要求は、オリジン トラフィックなしでエッジ キャッシュによって処理されます。
しかし、ファイルをシークできるようにしたいです。この機能は mp4-module から来ています。query-param "?start=120" を追加するだけで、タイムスタンプ 120 秒で始まる mp4 コンテンツを提供するよう nginx に指示します。これは、オリジンが直接リクエストされた場合に正常に機能します。しかし、nginx の caching-location で mp4-module を有効にするとすぐに、リクエストは 404 になります。
nginx.conf @ オリジン:
server {
listen 80;
server_name localhost;
root /usr/share/nginx/www;
location ~ \.mp4$ {
mp4;
expires max;
}
}
nginx.conf @ エッジ:
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;
}
}
私も試しました:
location / {
location ~ \.mp4$ { mp4; }
proxy_cache icdn_cache;
proxy_pass http://origin;
proxy_cache_key $uri;
}
キャッシュされた mp4 ファイルを mp4-module の seek-function で動作させる方法はありますか?