Добрый день.<div><br></div><div>Есть схема 2 origin + 10 edge.</div><div>С origin все хорошо, отдает быстро.</div><div><br></div><div>Проблема возникает с edge.</div><div>На них довольно мало места и весь контент там держать не получится.</div>
<div>Хотелось сделать схему с кешированием либо дотягиванием и удалением по atime.</div><div><br></div><div>Насколько я понял с кешированием не будет стримминга. Верно?</div><div><br></div><div>С proxy_store есть проблема с отдачей клиенту до того как файл полностью скачался.</div>
<div>Файлы где-то в среднем по 15МБ.</div><div><br></div><div><div> location / {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>internal;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>aio on;</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>directio 512;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>output_buffers 1 128k;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>location ~* \.mp4$ {</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> mp4;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> try_files $uri @origin;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> limit_rate_after 1m;</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> limit_rate 200k;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> </div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>location ~* \.flv$ {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> flv;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> try_files $uri @origin;</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> limit_rate_after 1m;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> limit_rate 200k;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
<div> }</div><div> </div><div> location /dl/ {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>return 503;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>location ~ ^/dl/(?P<secure_hash>[\w\-=]+,\d+)(?P<file>/.+)$ {</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> secure_link $secure_hash;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> secure_link_md5 $secure_link_expires.$file.<passphrase>;</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> if ($secure_link = "") {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>return 404;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> }</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> if ($secure_link = 0) {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>return 404;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span> }</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span> rewrite ^ /$file last;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div> }</div><div> </div><div> location @origin {</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>proxy_pass <a href="http://origin">http://origin</a>;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>#proxy_buffering off;</div><div>
<span class="Apple-tab-span" style="white-space:pre"> </span>proxy_ignore_client_abort on;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>proxy_store on;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>proxy_store_access user:rw group:r all:r;</div>
<div> }</div></div><div><br></div><div>Вот так все работает, но клиенту ничего не отдается пока файл полностью не скачался (в принципе ожидаемо), но если раскоментировать proxy_buffering то proxy_store перестает складывать файл.</div>
<div><div># nginx -V</div><div>nginx: nginx version: nginx/1.0.8</div><div>nginx: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-50)</div><div>nginx: TLS SNI support disabled</div><div>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'</div>
</div><div><br></div><div><br></div><div>Вопрос собственно как правильно реализовать схему?</div>