Nginx实战:2-日志配置

目录

前言

一、访问日志

1.字段配置

2.日志配置

3.默认配置

二、错误日志


前言

Nginx是一款高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP服务器。在Nginx的日常使用中,日志记录是非常重要的一部分,它可以帮助我们监控服务器的运行状态、诊断问题以及分析用户行为等。下面将介绍如何配置Nginx的日志。

http {
    ...
    
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                   '$status $body_bytes_sent "$http_referer" '
                   '"$http_user_agent" "$http_x_forwarded_for"';
    
    access_log /var/log/nginx/access.log main;
    
    error_log /var/log/nginx/error.log warn;
    
    ...
}

一、访问日志

访问日志记录每一次用户的资源请求,是最常用的数据分析来源。

1.字段配置

参数:log_format

格式:log_format 格式名 '字段格式'

(一般都是写在http下面,server里面直接引用就可以)

参考配置:

log_format main '$server_name $remote_addr - $remote_user [$time_local] "$request" '
'$status $uptream_status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'$ssl_protocol $ssl_cipher $upstream_addr $request_time $upstream_response_time';

字段说明(标红的是作者认为比较重要的字段)

  • $server_name:虚拟主机名称。如果nginx代理了多个域名,日志文件有没有分开,这个字段就可以起到区分的作用。
  • $remote_addr:远程客户端的IP地址。
  • -:空白,用一个“-”占位符替代,历史原因导致还存在。
  • $remote_user:远程客户端用户名称,用于记录浏览者进行身份验证时提供的名字,如登录百度的用户名scq2099yt,如果没有登录就是空白。
  • [$time_local]:访问的时间与时区,比如18/Jul/2012:17:00:01 +0800,时间信息最后的"+0800"表示服务器所处时区位于UTC之后的8小时。
  • $request:请求的URI和HTTP协议,这是整个PV日志记录中最有用的信息,记录服务器收到一个什么样的请求
  • $status:记录请求返回的http状态码,比如成功是200。
  • $upstream_addr:后端服务器的IP地址
  • $upstream_status:后端服务器返回的HTTP状态码
  • $body_bytes_sent:发送给客户端的文件主体内容的大小,比如899,可以将日志每条记录中的这个值累加起来以粗略估计服务器吞吐量。
  • $http_referer:记录从哪个页面链接访问过来的。 
  • $http_user_agent:客户端浏览器信息
  • $http_x_forwarded_for:客户端的真实ip,通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。
  • $ssl_protocol:SSL协议版本,比如TLSv1。
  • $ssl_cipher:交换数据中的算法,比如RC4-SHA。 
  • $upstream_addr:upstream的地址,即真正提供服务的主机地址。 
  • $request_time:整个请求的总时间。 
  • $upstream_response_time:请求过程中,upstream的响应时间。

2.日志配置

参数:access_log

格式:access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];

  •    path:是日志文件存放的路径(必填)
  •    format:是前面用log_format指定设置的日志格式的名称(非必填,不填就用默认格式配置)
  •    buffer:是设置内存缓冲区的大小,避免大量日志造成频繁磁盘读写,如果实时调试,就不要配置了
  •    flush:是设置缓冲区内日志的最长保存时间,超过时间也会立即写入到磁盘
  •    gzip: 日志写入前先进行压缩。压缩率可以指定,从1到9数值越大压缩比越高,同时压缩的速度也越慢。默认是1。
  •    if :设置条件判断 满足条件的才进行日志记录(可以写在http, server, location, if in location, limit_except中)

举例:

access_log /var/log/nginx/access.log man buffer=32k gzip flush=5m

不过一般简单配置就可以

access_log /var/log/nginx/access.log man

如果不开起访问日志可以配置 access_log off;

3.默认配置

默认的nginx的日志配置如下:

log_format  combined  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

access_log  logs/access.log  combined;

二、错误日志

日志级别支持:debug | info | notice | warn | error | crit | alert | emerg,错误级别从左到右越来越大。

error_log 可以在main,http,mail,stream,server,loaction 范围中定义,但是一般在man下面创建一个就可以了。(配置里面可以配置多个错误日志,但是相同范围下,多个配置会报错(例如http里面只能配置一个错误日志,配置多个会报错;http配置了,location里面一样可以配置))

配置格式:

error_log 日志文件(文件路径+文件名) 错误级别(非必选,默认error);

举例:

error_log /var/log/nginx/error.log error;

如果不开起错误日志可以配置 error_log off;

你可能感兴趣的:(【系列】Nginx运维实战,nginx,运维)