nginxpulse
“
轻量级 Nginx 访问日志分析与可视化面板,提供实时统计、PV 过滤、IP 归属地与客户端解析。
Github地址
https://github.com/likaia/nginxpulse
项目功能
-
实时统计:对 Nginx 的访问日志进行实时统计分析,帮助用户快速了解当前网站的访问情况。
-
PV 过滤:可以根据设定的规则对页面浏览量进行过滤,例如排除特定 IP 地址或用户代理的访问记录,从而更准确地统计有效流量。
-
IP 归属地查询:通过本地数据库(ip2region)和远程 API(ip-api.com)相结合的方式,查询访问者的 IP 归属地信息,并在页面上显示,方便用户了解流量来源。
-
客户端解析:对访问者的客户端信息(如浏览器类型、操作系统等)进行解析,帮助用户了解不同客户端的访问情况。
快速开始
1. Docker 部署-
单镜像部署:使用一个 Docker 镜像同时包含前端 Nginx 和后端服务。镜像内置 PostgreSQL 数据库,启动时会自动初始化数据库(如果未自备数据库)。必须挂载数据目录
/app/var/nginxpulse_data和/app/var/pgdata,否则容器会报错退出。 -
一键启动命令:
docker run -d --name nginxpulse \
-p 8088:8088 \
-v ./docker_local/logs:/share/logs:ro \
-v ./docker_local/nginxpulse_data:/app/var/nginxpulse_data \
-v ./docker_local/pgdata:/app/var/pgdata \
-v /etc/localtime:/etc/localtime:ro \
magiccoders/nginxpulse:latest -
注意事项:需要确保宿主机的
docker_local目录存在,并且文件权限设置正确,以便容器能够正常访问日志文件。如果使用配置文件方式,可以将configs/nginxpulse_config.json挂载到容器内的/app/configs/nginxpulse_config.json,若未提供配置文件或环境变量,首次启动会进入初始化配置向导。
-
使用远程镜像:通过 Docker Compose 文件配置服务,使用 Docker Hub 上的远程镜像。
services:
nginxpulse:
image:magiccoders/nginxpulse:latest
container_name:local_nginxpulse
ports:
-"8088:8088"
-"8089:8089"
volumes:
-./docker_local/logs:/share/logs
-./docker_local/nginxpulse_data:/app/var/nginxpulse_data
-./docker_local/pgdata:/app/var/pgdata
-/etc/localtime:/etc/localtime
restart:unless-stopped -
启动命令:
docker compose up -d
-
重要性:项目使用系统时区进行日志时间的解析与统计,因此需要确保运行环境的时区设置正确。
-
Docker/Docker Compose 部署:
-
推荐挂载宿主机的时区文件到容器内,例如
-v /etc/localtime:/etc/localtime:ro(Linux 系统)。 -
如果宿主机提供
/etc/timezone文件,也可以额外挂载-v /etc/timezone:/etc/timezone:ro。 -
如果只想指定时区,可以通过设置环境变量
TZ=Asia/Shanghai,但需要确保容器内有时区数据(例如安装了tzdata包或挂载了/usr/share/zoneinfo)。 -
单体部署(单进程):
-
默认使用当前系统的时区。
-
可以通过环境变量临时指定时区,例如
TZ=Asia/Shanghai ./nginxpulse。
-
入口地址:
http://<host>:8088/m。 -
页面功能:移动端仅提供“概览”“日报”“实时”“日志”四个页面。
-
初始化要求:首次初始化必须在电脑端完成,移动端会提示用户在电脑上打开。
-
前端构建:
cdwebapp
npm install
npm run build -
移动端构建:
cdwebapp_mobile
npm install
npm run build -
后端构建:
go mod download
go build -o bin/nginxpulse ./cmd/nginxpulse/main.go -
本地开发:运行
./scripts/dev_local.sh脚本,启动本地开发环境,前端开发服务默认端口为 8088,并会将/api代理到http://127.0.0.1:8089。本地开发前需要准备好日志文件,放在var/log/目录下,或者确保configs/nginxpulse_config.json文件中的logPath配置指向正确的日志文件路径。
-
重要提示:版本大于 1.5.3 后,已彻底弃用 SQLite,单体部署必须自备 PostgreSQL 数据库,并配置
DB_DSN(或在configs/nginxpulse_config.json文件中填写database.dsn)。 -
下载与执行:从项目的 releases 页面下载对应平台的二进制文件,执行后会生成单体可执行文件,该文件已内置前端静态资源,启动后即可同时提供前后端服务。
-
前端访问地址:
http://localhost:8088。 -
后端 API 访问地址:
http://localhost:8088/api/...。 -
配置方式:
-
方式 A:配置文件(默认):
-
方式 B:环境变量注入(无需文件):
CONFIG_JSON="$(cat /path/to/nginxpulse_config.json)"./nginxpulse -
在运行目录创建
configs/文件夹。 -
将
configs/nginxpulse_config.json文件放入该目录。 -
启动程序:
./nginxpulse。 -
注意事项:
-
配置文件路径为相对路径
./configs/nginxpulse_config.json,需要确保运行时的工作目录正确。