S
S
SovGVD2012-01-20 23:12:54
Nginx
SovGVD, 2012-01-20 23:12:54

Nginx and file sharing?

I use nginx on the server for controlled distribution of files ( wiki.nginx.org/XSendfile) The
task was to find out whether the user downloaded the file completely or not (for example, the download was interrupted or just canceled the download), but I have no idea how to do it. Does the habra community have any suggestions (the option with distributing a script for php/python/perl/etc is not accepted)?
upd: post_action (e.g. abarmotik.livejournal.com/7496.html )

# Здесь обрабатывается запрос на скачивание файла.<br/>
 # урл имеет вид <a href="http://example.com/download/-encrypted-file-id-">example.com/download/-encrypted-file-id-</a><br/>
 location /download {<br/>
 set $limit_rate 10k;<br/>
 limit_conn lim 1;<br/>
<br/>
# передаем запрос бэк-енду на расшифровку. В ответе ожидаем хедер X-Accel-Redirect <br/>
 proxy_pass <a href="http://127.0.0.1">127.0.0.1</a>:8888/nginxds/linkDecoder?domain=$host&path=$request_uri;<br/>
 proxy_set_header X-Real-IP $remote_addr;<br/>
 <br/>
 add_header Content-Length $content_length;<br/>
 add_header Content-Disposition attachment;<br/>
 }<br/>
<br/>
# В этот локейшн переходим по хедеру X-Accel-Redirect от бэк-енда (см. предыдущий локейшн)<br/>
 # Предполагается, что все раздаваемые файлы лежат в папке /storage<br/>
 location /storage {<br/>
 set $postURI $uri;<br/>
 set $postIP $remote_addr;<br/>
 set $postHOST $host;<br/>
 <br/>
 post_action @postDownload;<br/>
<br/>
root /;<br/>
 internal;<br/>
 }<br/>
<br/>
# по завершению скачивания файла передаем на бэк-енд переменные установленные<br/>
 # в предыдущем локейшыне и отданный объем (в байтах)<br/>
 location @postDownload {<br/>
 proxy_pass <a href="http://127.0.0.1">127.0.0.1</a>:8888/nginxds/postDownload?domain=$postHOST&uri=$postURI;<br/>
 proxy_set_header X-Real-IP $postIP;<br/>
 proxy_set_header BytesSent $body_bytes_sent;<br/>
 }

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Alexey Sundukov, 2012-01-21
@alekciy

On the move - look at the logs.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question