Karp 的技术博客

在 Nginx 中,您可以通过多种方式统计访问的 IP 数量。以下是几种常用的方法来实现这一目标。

1. 使用 Nginx 日志

Nginx 通常会记录访问日志,您可以通过分析这些日志来统计访问的 IP 数量。

1.1 配置 Nginx 日志

确保在您的 Nginx 配置文件中启用了访问日志。默认情况下,访问日志通常在 /var/log/nginx/access.log。配置示例如下:

http {
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                   '$status $body_bytes_sent "$http_referer" '
                   '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main;
}

1.2 统计 IP 数量

使用以下命令分析访问日志,统计唯一的 IP 地址数量:

cat /var/log/nginx/access.log | awk '{print $1}' | sort | uniq | wc -l

1.3 解释命令

  • cat /var/log/nginx/access.log:输出日志内容。
  • awk '{print $1}':提取每行的第一个字段,即 IP 地址。
  • sort:对 IP 地址进行排序。
  • uniq:去重,保留唯一的 IP 地址。
  • wc -l:统计行数,即唯一 IP 的数量。

2. 使用 Nginx 统计模块

Nginx 也可以通过一些第三方模块来直接统计访问 IP 数量,例如 ngx_http_stub_status_module

2.1 启用状态模块

在 Nginx 配置文件中添加如下配置:

server {
    location /nginx_status {
        stub_status on;
        allow 127.0.0.1;  # 只允许本地访问
        deny all;         # 拒绝其他访问
    }
}

2.2 访问状态页面

使用浏览器或 curl 访问状态页面:

curl http://localhost/nginx_status

这将显示连接数和其他状态信息,但不直接提供 IP 数量。

3. 使用阿尔法或日志分析工具

还有一些工具专门用于分析 Nginx 日志文件,例如:

  • GoAccess:一个实时的日志分析工具,可以提供详细的访问统计。
  • AWStats:一个强大的日志分析工具,可以生成图形化报告。

3.1 安装 GoAccess

在 Debian/Ubuntu 上可以使用以下命令安装:

sudo apt install goaccess

3.2 使用 GoAccess 分析日志

goaccess /var/log/nginx/access.log --log-format=COMBINED -o report.html

这将生成一个 HTML 格式的报告,您可以在浏览器中查看。

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2024年10月21日 03:57
0

目录

来自 《 Nginx 访问 IP 数量统计》