如何用nginx统计带有特定参数的url

问题描述

现在有个需求。一个网站可以直接用url访问。或者用邮件的链接访问,邮件的链接带有一个识别的参数。现在需要记录通过邮件链接访问网站的次数。要求在nginx做。

问题出现的环境背景及自己尝试过哪些方法

没用过nginx。束手无策

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

阅读 3.6k
4 个回答

可以分析nginx的access.log

楼上+1。nginx的默认access log格式已经包含了query params参数,所以即使你用grep | wc都能快速进行统计

可以先写个Linux脚本,统计nginx的access日志,然后在Java里调用这个脚本
shell脚本内容可以是简单的grep也可以是awk

java调用脚本代码如下:

Process process = Runtime.getRuntime().exec("shell脚本.sh");
int execSuccess = process.waitFor();
if (0 == execSuccess) {
    bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
    String resultAmount = "";
    while ((resultAmount = bufferedReader.readLine()) != null) {
        result.append(resultAmount);
    }
    return result.toString().trim();
}

nginx本身的逻辑表达能力有限,可以配合使用lua,通过Lua进行分析统计。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题