Welcome! Log In Create A New Profile

Advanced

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

Ruslan Ermilov
April 24, 2014 03:44AM
On Wed, Apr 23, 2014 at 07:12:56PM -0400, iprok wrote:
> Здравствуйте!
>
> Есть сайт одной программы, на котором в частности выкладываются ее
> дистрибутивы.
> Пользователям они доступны следующими способами:
> 1) По ссылкам со страницы sitename.org/downloads/ (редактируемая авторами
> сайта html с ссылками)
> 2) Путем просмотра sitename.org/files (список файлов и папок автоматически
> генерируемый через fancyindex)
> 3) Прямые ссылки извне.
>
> Стоит задача учитывать скачивания файлов по всем трем ссылкам. Парсинг логов
> не подходит (используется piwik, а он через логи сильно меньше инфы
> получает). Поэтому выбрал способ через php скрипт с x-accel-redirect. При
> этом скачивания через пункт 1 учитываются из коробки, так что они должны
> быть исключены, чтобы избежать дублей.
>
> Посмотрите, пожалуйста, вырезку из конфигов. files.down - символическая
> ссылка на files (без этого был циклический редирект. Можно ли без нее?). Все
> ли я правильно сделал?

Можно обойтись без symlink'а, используя директиву
"alias /var/www/sitename.org/files/" вместо root внутри
"location /files.down/". Этот location также имеет
смысл пометить как внутренний директивой internal.

Справочно сообщаю, что в готовящемся к выпуску релизе
реализована [1] возможность условной записи в access_log,
как-то так:

access_log logs/access.log combined if=$direct_download;

[1] http://hg.nginx.org/nginx/rev/cb308813b453

> 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);
> ?>
>
> Заранее спасибо всем откликнувшимся.

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

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

iprok April 23, 2014 07:12PM

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

Илья Шипицин April 24, 2014 01:08AM

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

iprok April 24, 2014 03:09AM

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

Илья Шипицин April 24, 2014 05:08AM

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

Ruslan Ermilov April 24, 2014 03:44AM

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

iprok April 24, 2014 04:28AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 178
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready