nginx/redis и обработка параметров отслеживания в URL-адресе

StackOverflow https://stackoverflow.com/questions/1935382

  •  20-09-2019
  •  | 
  •  

Вопрос

На своем сайте я использую nginx и redis.Для нескольких элементов на моем сайте я хочу добавить параметры отслеживания к их URL-адресам, чтобы, когда пользователь нажимает на элемент, я мог собирать статистику использования пользователя, помимо предоставления запрошенного пользователем контента.Ищу методы, как захватить эту статистику в redis из nginx, т.е.не заходя в фоновое приложение.

Например, предположим, что у меня есть несколько строк таблиц на моей странице, и каждая таблица содержит элементы в формате строк/столбцов.Итак, для элемента в {table:2, ряд:1, столбец:3}, если фактический URL-адрес:www.mysite.com/news/dodi, тогда я хочу встроить URL-адрес:www.mysite.com/news/dodi/day=29?table=2&row=1&column=3.Когда пользователь нажимает на нее, nginx нажимает Redis для получения содержимого, а также обновляет соответствующую статистику (здесь может быть увеличение дня-29, таблицы-2, ...).

Любое предложение о том, как мне добиться этого, не задействуя фоновое приложение?

Это было полезно?

Решение

Что касается параметров отслеживания, оставьте этот тип работы вне сферы запроса пользователей.Не заставляйте их платить за задержку отслеживания статистики.Cron скрипт, который извлекает параметры из файла access.log и обновляет Redis и/или базу данных.

Что касается кэширования контента, недавно выпущен модуль redis nginx, который работает почти так же, как модуль memcached.В настоящее время реализованы только GET и SELECT.Предполагается, что ваше приложение заполняет кеш.

http://wiki.nginx.org/Nginx3rdPartyModules#HTTP_Redis_Module

Пример nginx.conf:

http
{
 ...
        server {
            location / {
                set $redis_db   "0";
                set $redis_key  "$uri?$args";
                redis_pass      127.0.0.1:6379;
                error_page      404 502 504 = @fallback;
             }

             location @fallback {
                 proxy_pass      backed;
             }
        }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top