ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Хитрый учет скачиваемых по прямым ссылкам файлов (nginx + piwik)


  • To: nginx-ru@xxxxxxxxx
  • Subject: Хитрый учет скачиваемых по прямым ссылкам файлов (nginx + piwik)
  • From: "iprok" <nginx-forum@xxxxxxxx>
  • Date: Wed, 23 Apr 2014 19:12:56 -0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=selenium.jlkhosting.com; s=x; h=Date:Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=x2AwHg4e8o7Nwv3noo0ovuhicqdXh5gb1xqJ9YqF/+k=; b=vfUAJTTW00KwFF8CQE9lWlH1lJvaiXXdZ3DgYO4kzfbKk6rW0XIxB0vm0eCp/80bcJqp5viW3shkTjBE2VT6+OoCqLq4uoiMqaaYtbssww06EwqdOmlJdCEpfULBVC6ECkQrWHO0YRyElDE6ssB1m/5DSwg60ZyB0NC13CyHrG8=;

Здравствуйте!

Есть сайт одной программы, на котором в частности выкладываются ее
дистрибутивы. 
Пользователям они доступны следующими способами:
1) По ссылкам со страницы sitename.org/downloads/ (редактируемая авторами
сайта html с ссылками)
2) Путем просмотра sitename.org/files (список файлов и папок автоматически
генерируемый через fancyindex)
3) Прямые ссылки извне.

Стоит задача учитывать скачивания файлов по всем трем ссылкам. Парсинг логов
не подходит (используется piwik, а он через логи сильно меньше инфы
получает). Поэтому выбрал способ через php скрипт с x-accel-redirect. При
этом скачивания через пункт 1 учитываются из коробки, так что они должны
быть исключены, чтобы избежать дублей.

Посмотрите, пожалуйста, вырезку из конфигов. files.down - символическая
ссылка на files (без этого был циклический редирект. Можно ли без нее?). Все
ли я правильно сделал?

nginx.conf:
http {
...
map $http_referer $direct_download {
        default 1;
        ~*sitename.org/files/.* 1;
        ~*://sitename.org 0;
}
...
server {
...
root /var/www/sitename.org/htdocs;
...
location /files/ {
                location ~* /.*?[^/]$ { #Обрабатывает все файлы, но не
директории, листинг которых через fancyindex (на конце uri не должен быть /
)
                        if ($direct_download) {
                                rewrite ^/files/(.*) /down.php?path=$1
last;
                        }
                }
root /var/www/sitename.org/;

                fancyindex on;
                fancyindex_exact_size off;

                aio            on;
                directio       512;
                output_buffers 1 128k;
}
location /files.down/ {
                root /var/www/sitename.org/;

                aio            on;
                directio       512;
                output_buffers 1 128k;
                internal;
}

}}

ну и down.php:

<?php
...
// And redirect user to internal location
header("Content-Type: application/octet-stream");
header("X-Accel-Redirect: /files.down/" . $path);
?>

Заранее спасибо всем откликнувшимся.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,249507,249507#msg-249507

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.