温馨提示×

如何按ip查nginx日志

小樊
44
2026-09-19 11:08:44
栏目: 编程语言

在 Nginx 中,日志通常记录在 access.log(访问日志)和 error.log(错误日志)中。如果你想按 IP 地址查询 Nginx 日志,可以根据日志格式使用命令行工具(如 grepawk)进行过滤。


一、确认 Nginx 日志位置

常见路径:

/var/log/nginx/access.log
/var/log/nginx/error.log

如果你不确定:

nginx -T 2>/dev/null | grep access_log

二、按 IP 查询 access 日志

1. 查询某个 IP 的所有访问记录

grep '192.168.1.100' /var/log/nginx/access.log

2. 查询多个 IP

grep -E '192.168.1.100|10.0.0.5' /var/log/nginx/access.log

3. 统计某个 IP 的访问次数

grep '192.168.1.100' /var/log/nginx/access.log | wc -l

三、按 IP 做更精准的过滤(推荐)

如果日志格式是默认的:

$remote_addr - $remote_user [$time_local] "$request" ...

使用 awk 精确匹配第一个字段(IP)

awk '$1 == "192.168.1.100"' /var/log/nginx/access.log

统计每个 IP 的访问量(TOP IP)

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head

四、按 IP 查询 error 日志

grep '192.168.1.100' /var/log/nginx/error.log

注意:error 日志不一定包含客户端 IP(取决于错误类型)


五、结合时间范围查询(示例)

查询某天的访问

grep '10/Apr/2024' /var/log/nginx/access.log | grep '192.168.1.100'

查询某小时

grep '10/Apr/2024:14:' /var/log/nginx/access.log | grep '192.168.1.100'

六、实时监控某个 IP

tail -f /var/log/nginx/access.log | grep '192.168.1.100'

七、如果使用了 JSON 日志格式

例如:

{"remote_addr":"192.168.1.100","request":"GET /"}

查询方式:

grep '"remote_addr":"192.168.1.100"' /var/log/nginx/access.log

如果你愿意,可以:

  • 贴出你的 Nginx 日志格式
  • 说明你是 查攻击、查访问量,还是排查错误

我可以给你更精确的命令。

0