Nginx软件会把自身运行的故障信息及用户访问的日志信息记录到指定的日志文件里。
1. Nginx错误日志信息
配置记录Nginx的错误信息是调试Nginx服务的重要手段,属于核心功能模块
(ngx_core_module)的参数,该参数名字为error_log,可以放在Main区块中全局配置,也可以放置在不同的虚拟主机中单独记录虚拟主机的错误信息。
error_log的语法格式及参数语法说明如下:
error_log file level;
关键字 日志文件 错误日志级别
其中,关键字error_log不能改变,日志文件可以指定任意存放日志的目录,错误日志级别常见的有[debug|info|notice|warn|error|crit|alert|emerg],级别越高记录的信息越少,生产场景一般是warn|error|crit这三个级别之一,注意不要配置info等较低级别,会带来巨大的磁盘I/O消耗。
error_log的默认值为:
#default:error_log logs/error.log error;
可以放置的标签段为:
#context: main,http,server,location
2. Nginx访问日志(access_log)
Nginx软件会把每个用户访问网站的日志信息记录到指定的日志文件里,供网站管理者分析用户
浏览行为等,此功能由ngx_http_log_module模块负责。访问日志主要由下表中的两个参数控制。
参数 | 说明 |
---|---|
log_format | 用来定义记录日志的格式(可以定义多种日志格式,取不同的名字即可) |
access_log | 用来指定日志文件的路径及使用的何种日志格式记录日志。 |
Nginx日志格式中默认的参数配置如下:<br /> log_format main '$remote_addr - $remote_user [$time_local] "$request" '<br /> '$status $body_bytes_sent "$http_referer" '<br /> '"$http_user_agent" "$http_x_forwarded_for"';<br /> Nginx记录日志的默认参数配置如下:<br />access_log logs/access.log main;
3. Nginx日志变量说明
Nginx日志变量 | 说明 |
---|---|
$remote_addr | 记录访问网站的客户端地址 |
$http_x_forwarded_for | 当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器上也要进行相关的x_forwarded_for设置。 |
$remote_user | 远程客户端用户名称 |
$time_local | 记录访问时间与时区 |
$request | 用户的http请求起始行信息。 |
$status | http状态码,记录请求返回的状态,例如:200、404、301等 |
$body_bytes_sents | 服务器发送给客户端的响应body字节数 |
$http_referer | 记录此次请求是从哪个链接访问过来的, |
$http_user_agent | 记录客户端访问信息,例如:浏览器,手机客户端等。 |
在没有特殊要求的情况下,采用默认的配置即可。
4. Nginx日志轮询切割
由于Nginx没有好的切割工具,所以只能采用cron+scripts方式来进行日志切割。
在/server/scripts目录下新建日志切割脚本,文件名为 curnginx_log.sh 文件内容如下:
cd /app/nginx/logs
/bin/mv access.log access$(date +%F).log
/app/nginx/sbin/nginx -s reload
把脚本放到定时任务里面执行
crontab -e #此命令用来编辑定时任务
00 00 * /bin/sh /server/scripts/cur_nginx_log.sh >/dev/null 2>&1
脚本详解:
日志文件很大的情况下,一定要使用mv命令来进行切割,因为mv命令不涉及到磁盘I/O,只是换了一个文件的访问入口而已。