MP4 + proxy_cache/proxy_store

Alexander Moskalenko alexander.moskalenko на gmail.com
Вт Окт 25 14:09:32 UTC 2011


Спасибо за конфиг, к сожалению уперся в out на origin серверах.
Если же сделать с limit_zone по $uri то edge укладывается по IO.

Я тут немного переработал конфиг, вышло вот такое, если кому интересно.

limit_zone one $binary_remote_addr 64k;

server {
    listen 127.0.0.1:812;
    server_name _;

    root /media;
    location / {
limit_conn one 1;
        proxy_pass http://origin;
        proxy_ignore_client_abort on;
        proxy_store on;
    }
}

server {
    listen       1.1.1.1:80;
    server_name  _;

    root /media;
    location / {
internal;
aio             on;
directio        512;
output_buffers  1 128k;

location ~* \.mp4$ {
    mp4;
    try_files $uri @origin;
    limit_rate_after  1m;
    limit_rate        200k;
}

location ~* \.flv$ {
    flv;
    try_files $uri @origin;
    limit_rate_after  1m;
    limit_rate        200k;
}
    }

    location /dl/ {
return 503;
location ~ ^/dl/(?P<secure_hash>[\w\-=]+,\d+)(?P<file>/.+)$ {
    secure_link $secure_hash;
    secure_link_md5 $secure_link_expires.$file.<passphrase>;

    if ($secure_link = "") {
return 403;
    }
    if ($secure_link = 0) {
return 403;
    }
    rewrite ^ /$file last;
}
    }

    location @origin {
proxy_pass http://127.0.0.1:812;
        proxy_ignore_client_abort on;
        proxy_intercept_errors on;
        error_page 503 = @stream;
    }

    location @stream {
proxy_pass http://origin;
proxy_buffering off;
    }
}


2011/10/24 Kruglov Eugenie <ekruglov at gmail.com>

>     limit_zone one $binary_remote_addr 64k;
>     server {
>         listen 127.0.0.101:812;
>         server_name host_stream_store;
>
>         location ~ '^/store/(\d+_(\d+)_[\da-f]{32}\.flv)$' {
>             limit_conn one 1;
>             proxy_pass http://remote-backend/$1;
>             proxy_store /mnt/storage/streaming/$2.flv;
>         }
>     }
>
>     server {
>         server_name frontend;
>
>         location ~ '^/\d+_(\d+)_[\da-f]{32}\.flv$' {
>             set $args_start $args;
>             if ( -f /mnt/storage/streaming/$1.flv ){
>                 rewrite ^ /stream$request_uri last;
>             }
>             rewrite ^ /stream_store$request_uri last;
>         }
>         location  @stream {
>             proxy_pass http://remote-backend$request_uri;
>             proxy_set_header Host remote-backend;
>         }
>         location ~ '^/stream_store/(\d+_\d+_[\da-f]{32}\.flv)'  {
>             internal;
>             proxy_pass http://127.0.0.101:812/store/$1;
>             proxy_intercept_errors on;
>             error_page 503 = @stream;
>         }
>         location ~ ^/stream/\d/\d/([^/]+\.flv)$ {
>             internal;
>             set $args $args_start;
>             alias /mnt/storage/streaming/$1;
>             mp4;
>         }
>     }
>
> 2011/10/24 Alexander Moskalenko <alexander.moskalenko at gmail.com>
>
>> 2011/10/24 Kruglov Eugenie <ekruglov at gmail.com>
>>
>>> Если устроит реализация, при которой во время работы proxy_store одному
>>> клиенту все остальные проксируются на бекенд - могу выложить конфиг.
>>>
>>> Выкладывайте, возможно хоть подтолкет в нужное направление.
>>
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru at nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
>
> --
> Faithfully yours, Eugenie
> ICQ #701217
> GTalk ekruglov at gmail.com
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20111025/6bafafa1/attachment.html>


Подробная информация о списке рассылки nginx-ru