4

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 構成を調整するにはどうすればよいですか?

4

0 に答える 0