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
|