nginx/redis и обработка параметров отслеживания в URL-адресе
Вопрос
На своем сайте я использую 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;
}
}
}