狂奔的蜗牛

nginx 转发全部请求

nginx 2021-02-07 16:00:25 浏览:3109 分享
还可以输入1000字

全部回答(1)

最佳回答

Linux系统怎么分析Nginx日志在Linux系统的Nginx日志中,可以查看系统操作记录和错误描述。 通过分析Nginx日志可以了解系统的运行状态。 那么,如何分析Linux系统上的Nginx日志呢?
与Nginx日志记录相关的配置有两个地方:access_log和log_format。
​默认格式:
​access_log/data/logs/nginx-access.log;
​log_formatold'$remote_addr[$time_local]$status$request_time$body_bytes_sent'
​​'“$request""$http_referer""$http_user_agent"';
相信大多数使用过Nginx的人都熟悉Nginx默认的日志格式配置和日志内容。 但是默认的配置和格式虽然可读,但是很难理解
可以配置Nginx日志刷新相关的策略:
例如设置一个缓冲区,当缓冲区满了32KB时刷新磁盘,如果缓冲区小于5秒,则配置强制刷新如下;如下:
access_log/data/logs/nginx-access.logbuffer=32kflush=5s;
这个决定了日志是否可以实时查看,以及日志对磁盘I/O的影响
有许多可以写入Nginx日志的变量在默认配置中未显示:
例如:
请求数据大小:$request_length
返回数据大小:$bytes_sent
请求时间:$request_time
使用的连接序列号:$connection
当前连接的请求数:$connection_requests
Nginx默认格式不可计算,因此您需要找到一种方法将其转换为计算格式,例如使用^A控制字符(在Mac上键入ctrl+vctrl+a)分隔每个字段。
​log_format可以是这样的:
​log_formatnew'$remote_addr^A$http_x_forwarded_for^A$host^A$time_local^A$status^A'
​'$request_time^A$request_length^A$bytes_sent^A$http_referer^A$request^A$http_user_agent';
然后使用普通的Linux命令行工具进行分析:
找到访问频率和次数最高的URL:
Cataccess.log|awk-F'^A''{print$10}'|sort|uniq-c
在当前日志文件中查找500个访问错误:
cataccess.log|awk-F'^A''{if($5==500)print$0}'
查找当前日志文件中500错误的数量:
cataccess.log|awk-F'^A''{if($5==500)print$0}'|wc-l
查找给定分钟内500次失败的命中数:
cataccess.log|awk-F'^A''{if($5==500)print$0}'|grep'09:00'|wc-l
查找耗时超过1秒的慢速查询:
Tail-faccess.log|awk-F'^A''{if($6》1)print$0}'
如果只想查看某些位:
tail-faccess.log|awk-F'^A''{if($6》1)打印$3“|”$4}'
查找502错误最多的URL:
cataccess.log|awk-F'^A''{if($5==502))print$11}'|sort|uniq-c
查找200个空页
cataccess.log|awk-F'^A''{if($5==200&&$8《100)print$3″|”$4″|”$11″|”$6}'
查看实时日志数据流
Tail-faccess.log|cat-e

Tail-faccess。 log|tr'^A''|'
这个思路可以用于很多其他的分析,比如最常用的UA;分析请求频率最高的IP地址所花费的时间;分析等。
这是一个大型网络日志分析系统的原型。 这种格式对于后续的大规模批量、流计算也非常方便。
以上就是如何在Linux系统上分析Nginx日志的详细内容。 可见Nginx日志还是有非常强大的作用的。

nginx如何解决超长请求串在这种情况下,不应更改nginx。 更改代码并使用POST请求。 get有自己的长度限制

2