Nginx如何实现日志记录?

Nginx可以通过log_format与access_log模块记录访问日志。访问日志用于记录网站访问信息,主要用于:

  • 访问统计:分析访问量、流量等信息
  • 安全审计:记录访问IP、时间等信息,用于发现未经授权访问
  • 性能优化:通过日志分析频繁访问URL,配置缓存改善性能
  • 错误诊断:通过日志定位异常访问导致的500错误等
log_format配置日志格式,包含不同的记录字段:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '  
                  '$status $body_bytes_sent "$http_referer" '    
                  '"$http_user_agent" "$http_x_forwarded_for"';
  • $remote_addr与$remote_user:客户端IP与用户名
  • $time_local:访问时间与时区
  • $request:请求行
  • $status:响应状态码
  • $body_bytes_sent:发送字节数
  • $http_referer: referer页面
  • $http_user_agent:用户代理(浏览器)
  • $http_x_forwarded_for:XFF字段,记录代理客户端真实IP

access_log指定日志文件与log_format配置的格式:

access_log  /data/nginx/logs/host.access.log  main;

此例将使用log_format中的main格式记录访问日志到/data/nginx/logs/host.access.log文件。
Nginx能记录的访问日志信息比较丰富,除上述字段外,还有更详细字段用于记录变量、请求内容与响应内容等。