Nginx日志统计中,流量来源分析可通过以下方法实现:
-
关键字段解析
$http_referer:直接标识请求来源页面URL,可统计来源网站、搜索引擎等。$http_user_agent:分析客户端设备类型(如移动端/PC端)、浏览器(如Chrome/Edge)及版本,辅助判断流量来源特征。$remote_addr:统计直接访问的客户端IP,结合IP库可分析地理位置来源。$x_forwarded_for:当Nginx作为反向代理时,获取客户端真实IP,避免代理层IP干扰。
-
命令行工具分析
- 统计来源域名/URL:
awk -F'"' '{print $4}' access.log | sort | uniq -c | sort -nr | head # 提取Referer域名 - 按时间段分析来源:
awk '/2025-09-01/' access.log | awk -F'"' '{print $4}' | sort | uniq -c | sort -nr # 筛选特定日期来源 - 识别高频来源:
awk -F'"' '{print $4}' access.log | sort | uniq -c | sort -nr | head -n 10 # 统计前10大来源
- 统计来源域名/URL:
-
工具辅助分析
- GoAccess:实时解析日志,生成来源分布、用户代理等可视化图表,支持自定义字段。
- ELK Stack(Elasticsearch+Logstash+Kibana):适合大规模日志,可聚合分析来源趋势、异常检测。
- Python脚本:通过正则表达式提取来源字段,结合Pandas库生成统计报告,支持复杂分析逻辑。
-
进阶分析方向
- 来源渠道归类:根据
$http_referer中的域名规则(如包含google.com归为搜索引擎),分类统计渠道流量。 - 异常来源检测:通过
$request_method(如异常POST请求)、$status(如大量404)结合来源IP,识别恶意爬虫或攻击。
- 来源渠道归类:根据
注:需先在Nginx配置中自定义日志格式,确保包含$http_referer等字段,并定期清理日志以避免数据冗余。