Nginx访问日志举例分析

发布时间:2021-12-13 09:48:54 作者:iii
来源:亿速云 阅读:185
# Nginx访问日志举例分析

## 一、Nginx访问日志概述

Nginx作为当前最流行的Web服务器之一,其访问日志是运维人员和开发人员分析网站行为、排查问题的重要依据。访问日志记录了客户端向Nginx服务器发起的每一个请求的详细信息,通过分析这些数据可以:

1. 了解网站访问情况
2. 发现异常访问行为
3. 优化网站性能
4. 进行安全审计

### 1.1 日志配置格式

在nginx.conf配置文件中,日志格式通过`log_format`指令定义:

```nginx
log_format main '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent"';

常见变量说明: - $remote_addr:客户端IP地址 - $time_local:访问时间 - $request:请求方法、URI和协议 - $status:HTTP状态码 - $body_bytes_sent:发送给客户端的字节数

二、日志分析实战

2.1 基础日志示例分析

一条典型的Nginx访问日志如下:

112.65.12.48 - - [15/Jul/2023:10:12:36 +0800] "GET /article/123 HTTP/1.1" 200 4325 "https://www.example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"

字段解析: 1. 112.65.12.48:访问者IP 2. -:未验证用户标识(显示为-) 3. [15/Jul/2023:10:12:36 +0800]:北京时间2023年7月15日10:12:36 4. GET /article/123 HTTP/1.1:请求方法为GET,请求URI 5. 200:HTTP状态码(成功) 6. 4325:响应大小4,325字节 7. https://www.example.com/:来源页面 8. Mozilla/5.0...:用户浏览器信息

2.2 状态码分析

常见HTTP状态码分类:

状态码 说明 可能原因
200 请求成功 正常访问
301302 重定向 URL变更或跳转
404 页面不存在 错误链接或资源被删除
500 服务器内部错误 后端程序异常
503 服务不可用 服务器过载或维护

分析案例:

# 统计各状态码出现次数
cat access.log | awk '{print $9}' | sort | uniq -c | sort -rn

   4821 200
    125 304
     87 404
      3 500

2.3 流量分析

2.3.1 统计PV/UV

# 计算总PV(页面访问量)
wc -l access.log

# 计算UV(独立访客)
awk '{print $1}' access.log | sort | uniq | wc -l

2.3.2 流量时段分布

# 按小时统计访问量
awk '{print $4}' access.log | cut -d: -f2 | sort | uniq -c

  142 08
  356 09
  721 10
  ... 

2.4 热门资源分析

# 统计访问最多的10个URL
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -10

  1258 /static/js/main.js
  1123 /
   876 /products
    ...

三、高级分析技巧

3.1 异常访问检测

3.1.1 扫描器识别

# 查找可能的扫描行为(短时间内大量404)
awk '($9 ~ /404/)' access.log | awk '{print $1}' | sort | uniq -c | sort -nr

    45 61.174.51.122
    12 183.3.224.34

3.1.2 CC攻击检测

# 统计单IP请求频率(前20名)
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -20

  1428 112.65.12.48
   876 183.45.23.11
    ...

3.2 性能分析

3.2.1 慢请求分析

如果配置了$request_time

# 显示处理时间最长的10个请求
awk '{print $NF,$7}' access.log | sort -nr | head -10

3.456 /api/search
2.123 /report/generate
...

3.2.2 大文件下载监控

# 统计传输数据量最大的请求
awk '{print $10,$7}' access.log | sort -nr | head -5

5242880 /download/package.zip
1048576 /video/demo.mp4

四、日志分析工具推荐

4.1 命令行工具

  1. AWK:文本处理神器

    # 统计各IP的访问次数
    awk '{ip[$1]++} END{for(i in ip) print ip[i],i}' access.log | sort -nr
    
  2. GoAccess:实时日志分析工具

    goaccess access.log -o report.html --log-format=COMBINED
    

4.2 可视化方案

  1. ELK Stack

    • Elasticsearch 存储日志
    • Logstash 处理日志
    • Kibana 可视化展示
  2. Grafana+Loki

    • Loki 日志聚合系统
    • Grafana 展示面板

五、日志分析实战案例

5.1 案例1:突发流量分析

现象:网站突然变慢

分析步骤: 1. 检查异常时间段的请求量

   sed -n '/15\/Jul\/2023:14/,/15\/Jul\/2023:15/p' access.log | wc -l
  1. 发现大量相同API请求
    
    awk '/15\/Jul\/2023:14/{print $7}' access.log | sort | uniq -c | sort -nr
    
  2. 确认是爬虫密集访问导致

5.2 案例2:资源缺失问题

现象:控制台报大量404错误

分析过程

# 找出所有404请求的资源
grep ' 404 ' access.log | awk '{print $7}' | sort | uniq -c

  45 /oldpath/images/logo.png
  32 /static/old.js

六、日志管理最佳实践

  1. 日志轮转:使用logrotate避免日志过大

    /var/log/nginx/*.log {
       daily
       rotate 30
       compress
       missingok
       notifempty
    }
    
  2. 敏感信息过滤:避免记录密码等敏感数据

    log_format sanitized '$remote_addr - $request $status';
    
  3. 结构化日志:JSON格式更方便分析

    log_format json_analytics escape=json
     '{"time":"$time_iso8601",'
     '"ip":"$remote_addr",'
     '"method":"$request_method",'
     '"uri":"$request_uri"}';
    

七、总结

通过对Nginx访问日志的系统分析,我们可以:

  1. 实时掌握网站运行状态
  2. 快速定位性能瓶颈
  3. 及时发现安全威胁
  4. 为业务决策提供数据支持

建议将日志分析工作自动化,并建立定期审计机制。对于高流量网站,应考虑使用专业的日志分析平台处理海量数据。

注:本文所有示例基于Nginx默认日志格式,实际使用时请根据业务需求调整分析命令。 “`

这篇文章共计约2600字,采用Markdown格式编写,包含: 1. 多级标题结构 2. 代码块示例 3. 表格展示 4. 命令行实操片段 5. 分析案例说明 6. 工具推荐和最佳实践

可根据实际需求进一步补充具体案例或扩展特定分析场景。

推荐阅读:
  1. ELK分析nginx日志
  2. ELK如何分析nginx access日志

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

nginx

上一篇:最便捷搭建 ZooKeeper 服务器的方法是什么

下一篇:如何配置Nginx反向代理Tomcat

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》