龙空技术网

如何设置nginx的access.log访问日志格式、案例分析和日志切割

波波说运维 334

前言:

此时看官们对“nginx记录指定ip的日志”大致比较珍视,朋友们都想要学习一些“nginx记录指定ip的日志”的相关文章。那么小编同时在网上搜集了一些关于“nginx记录指定ip的日志””的相关文章,希望你们能喜欢,小伙伴们一起来了解一下吧!

概述

日志是我们运维用来分析问题和处理问题的重要维护依据,但是Nginx的日志文件是非常庞大的,而且以文本格式显示导致Nginx的日志直接分析非常困难。有时候为了初步处理或紧急处理问题,我们也对直接打开Nginx的日志文件进行分析,这里我们就介绍如何对Nginx的默认日志格式进行分析和含义的解读。

Nginx配置文件中的配置项

在安装好Nginx后系统会默认给你开通access.log访问日志功能,这个配置文件在etc/nginx的文件夹下,打开配置文件后如下面是按行进行的默认格式配置。

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

Nginx日志的配置项目:access_log /var/log/nginx/access.log main;

Nginx日志范例分析

日志写入文本文件是一行行的,这里我们把一行日志,按3个字段进行分行进行分析。

61.135.165.19 - 这里是访问者的IP地址

- 这里是客户名称,但一般获取不到。

[17/Nov/2018:03:39:32 +0800] 这里是访问的时间

"GET /ask/0901/images/a13.jpg HTTP/1.0" 这个是这次记录的访问对象

200 返回的状态码

19916 这条记录访问对象的大小

";gjc=7riyoudongbei&e_keywordid=%7Bkeywordid%7D" 这个是从什么入口访问的也就是来源。

"Mozilla/5.0 (Linux; U; Android 4.1; en-us; GT-N7100 Build/JRO03C;Baiduspider-ads)AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30" 这个是客户端浏览器的一些参数

"10.205.160.32" 这里是代理的地址,一般是没有的。

Nginx日志中变量对应的字段

remote_addr 远程请求IP地址

remote_user 客户端用户的名称,没有时用-符合代替

time_local 本地时间戳

request 请求具体URI文件,例如网页中的JPG图片。

status http请求状态

body_bytes_sent 请求文件大小

http_refer 网页url跳转来源,源地址,可以伪造。例如一个HTML网页然后调用图片URI资源。

http_user_agent 用户终端浏览器UserAgent的相关信息

http_x_forwarded_for 是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项

其他非默认的选项

host 请求host地址

request_time 整个请求的总时间

upstream_addr 后台提供服务的地址(即转发处理的目标地址)

upstream_reponse_time 请求时,upstream的响应时间

upstream_status upstream状态

nginx日志切割

通过如下方式达到日志切割:

# vi logcron.shlog_dir="/data/logs/nginx"date_dir=`date +%Y%m%d`/bin/mkdir -p ${log_dir}/${date_dir} > /dev/null 2>&1/bin/mv ${log_dir}/access.log ${log_dir}/${date_dir}/access.log

这里只需要定义一个cron,在每天晚上23:59:50执行这个脚本就可以了。

篇幅有限,关于nginx的access.log访问日志方面就介绍到这了,后面会分享更多关于devops和DBA方面内容,感兴趣的朋友可以关注下!

标签: #nginx记录指定ip的日志