代码之家  ›  专栏  ›  技术社区  ›  Ethan

nginx/redis及url中跟踪参数的处理

  •  2
  • Ethan  · 技术社区  · 15 年前

    我在我的网站上使用nginx和redis。对于我网站上的几个项目,我想将跟踪参数添加到它们的url中,这样当用户单击某个项目时,除了为用户请求的内容提供服务之外,我还可以收集用户使用情况的统计信息。我正在寻找如何从nginx在redis中捕获这些统计数据的方法,即不必点击后台应用程序。

    例如,假设我的页面上有几行表,每个表都保存行/列格式的项。所以,对于{table:2,row:1,column:3}中的一个项目,如果实际的url是:www.mysite.com/news/dodi,那么我想嵌入url:www.mysite.com/news/dodi/day=29?表=2行=1列=3。当用户点击它时,nginx将点击redis来获取内容并更新相应的统计信息(这里可以是增量day-29,表-2,…)。

    有什么建议可以让我在不使用后台应用程序的情况下实现这一点吗?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Ryan Cox    15 年前

    对于跟踪参数,请将此类型的工作保留在用户请求的范围之外。不要让他们为统计数据跟踪支付延迟惩罚。cron从access.log中提取参数并更新redis和/或数据库的脚本。

    在缓存内容方面,最近发布了一个nginx redis模块,其工作方式与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;
                 }
            }
    }