Windowsサーバー用のnginxでビデオストリーミングを使用したいです。私はこのnginx設定を持っています:
#user nobody;
worker_processes 1;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
proxy_max_temp_file_size 0;
proxy_cache_path /nginx/cache levels=1:2 keys_zone=STATIC:1000m max_size=1000m inactive=720m;
proxy_temp_path /nginx/tmp;
server {
listen 81;
server_name 127.0.0.1;
location ~* .(jpe?g|gif|png|ico|css|pdf|ppt|txt|bmp|rtf|js)$ {
access_log off;
proxy_pass http://10.1.4.22:9001;
proxy_cache STATIC;
proxy_ignore_headers "Set-Cookie";
proxy_hide_header "Set-Cookie";
}
location / {
proxy_pass http://10.1.4.22:9001;
}
location ~* /!/scorms.ecp/\d+(/.*\.(mp4|webm|ogv))$ {
root /video;
proxy_pass http://10.1.4.22:9001;
rewrite /!/scorms.ecp/\d+/(\w+)/\d+/\d+/\w+/(.+) /$1/$2 break;
try_files $1 @fallback;
error_log logs/error.log debug;
flv;
mp4;
mp4_buffer_size 512k;
mp4_max_buffer_size 1m;
#mp4_limit_rate on;
#mp4_limit_rate_after 30s;
}
location @fallback {
proxy_pass http://10.1.4.22:9001;
flv;
mp4;
mp4_buffer_size 512k;
mp4_max_buffer_size 1m;
}
}
}
この構成で最も重要なことは次のとおりです。
location ~* /!/scorms.ecp/\d+(/.*\.(mp4|webm|ogv))$ {
root /video;
proxy_pass http://10.1.4.22:9001;
rewrite /!/scorms.ecp/\d+/(\w+)/\d+/\d+/\w+/(.+) /$1/$2 break;
try_files $1 @fallback;
error_log logs/error.log debug;
flv;
mp4;
mp4_buffer_size 512k;
mp4_max_buffer_size 1m;
#mp4_limit_rate on;
#mp4_limit_rate_after 30s;
}
リクエストhttp://host:port/!/scorms.ecp/27/TESTC/1/1/images/pravilo2.mp4を送信します。error.log には次のものがあります。
2016/05/25 09:53:19 [error] 9200#7996: *1 CreateFile() "D:\PAPISDK_4_T\nginx-1.10.0/html/TESTC/pravilo11.mp4" failed (3: The system cannot find the path specified), client: 10.1.4.22, server: 127.0.0.1, request: "GET /!/scorms.ecp/27/TESTC/1/1/images/pravilo11.mp4 HTTP/1.1", host: "10.1.4.22:81", referrer: "http://10.1.4.22:81/!/scorms.ecp/27/TESTC/1/1/start.html"
nginx が「D:\video/TESTC/pravilo11.mp4」ではなく「D:\PAPISDK_4_T\nginx-1.10.0/html/TESTC/pravilo11.mp4」を検索しようとする理由がわかりません。「root D:\video;」を使ってみた 同じエラーを受け取りました。また、「root」の代わりに「alias」を使用しようとしましたが、次のエラーが発生しました。
alias /video; -> "alias" cannot be used in location "/!/scorms.ecp/\d+(/.*\.(mp4|webm|ogv))$" where URI was rewritten
「D:\PAPISDK_4_T\nginx-1.10.0/html/TESTC/pravilo11.mp4」ではなく、次のパス「D:\video/TESTC/pravilo11.mp4」でビデオ ファイルを検索するように Windows の nginx 構成を調整するにはどうすればよいですか?