我需要实施 NGINX 速率限制。有很多关于如何执行此操作的指南,但没有关于如何从访问日志中获取实际值/统计信息的指南。
我需要从 NGINX 访问日志中获取的是。
这可能吗?这里的一位高级工程师告诉我事实并非如此,但我认为可能是,但我有点 Linux 菜鸟。
谢谢大家
有一个非常好的教程适用于 Nginx,并进行了一些小的修改:使用 Apache 日志查看流量级别
在此服务器上有自定义日志格式,您需要适应您的服务器。
注意:如果使用日志轮换,您可能需要提供较旧的日志文件。 示例:
zgrep /var/log/nginx/access.log* | cut -d [ -f 5 | cut -d ] -f 1
# between 5 and 6 there is the date, for example: [23/Oct/2024:07:48:15 +0000]
# Requests per day
cat /var/log/nginx/access.log.1 | cut -d [ -f 5 | cut -d ] -f 1 | cut -d: -f1 | uniq -c
# Requests per hour (all days)
cat /var/log/nginx/access.log.1 | cut -d [ -f 5 | cut -d ] -f 1 | awk -F: '{print $2":00"}' | sort -n | uniq -c
# Requests per hour (per day)
cat /var/log/nginx/access.log.1 | cut -d [ -f 5 | cut -d ] -f 1 | cut -d [ -f 5 | cut -d ] -f 1 | awk -F: '{print $1":"$2":00"}' | sort -n | uniq -c
# Requests per minute (all days)
cat /var/log/nginx/access.log.1 | cut -d [ -f 5 | cut -d ] -f 1 | awk -F: '{print $2":"$3}' | sort -nk1 -nk2 | uniq -c | awk '{ if ($1 > 10) print $0}'