MP4 + proxy_cache/proxy_store
Alexander Moskalenko
alexander.moskalenko на gmail.com
Пн Окт 24 08:58:28 UTC 2011
Добрый день.
Есть схема 2 origin + 10 edge.
С origin все хорошо, отдает быстро.
Проблема возникает с edge.
На них довольно мало места и весь контент там держать не получится.
Хотелось сделать схему с кешированием либо дотягиванием и удалением по
atime.
Насколько я понял с кешированием не будет стримминга. Верно?
С proxy_store есть проблема с отдачей клиенту до того как файл полностью
скачался.
Файлы где-то в среднем по 15МБ.
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 404;
}
if ($secure_link = 0) {
return 404;
}
rewrite ^ /$file last;
}
}
location @origin {
proxy_pass http://origin;
#proxy_buffering off;
proxy_ignore_client_abort on;
proxy_store on;
proxy_store_access user:rw group:r all:r;
}
Вот так все работает, но клиенту ничего не отдается пока файл полностью не
скачался (в принципе ожидаемо), но если раскоментировать proxy_buffering то
proxy_store перестает складывать файл.
# nginx -V
nginx: nginx version: nginx/1.0.8
nginx: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-50)
nginx: TLS SNI support disabled
nginx: configure arguments: --prefix=/etc/nginx/ --sbin-path=/usr/sbin/nginx
--conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid
--lock-path=/var/run/nginx.lock
--http-client-body-temp-path=/var/cache/nginx/client_temp
--http-proxy-temp-path=/var/cache/nginx/proxy_temp
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
--http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx
--with-http_ssl_module --with-http_realip_module --with-http_addition_module
--with-http_sub_module --with-http_dav_module --with-http_flv_module
--with-http_mp4_module --with-http_gzip_static_module
--with-http_random_index_module --with-http_secure_link_module
--with-http_stub_status_module --with-mail --with-mail_ssl_module
--with-file-aio --with-ipv6 --with-cc-opt='-O2 -g -m64 -mtune=generic'
Вопрос собственно как правильно реализовать схему?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20111024/8a6365bf/attachment.html>
Подробная информация о списке рассылки nginx-ru