news 2026/4/18 11:48:48

一款好用的 Nginx 日志分析工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一款好用的 Nginx 日志分析工具

轻量级的 Nginx 日志分析面板。

实时看 PV/UV 数据
IP 归属地查询(国内用 ip2region 本地库,国外走 ip-api)
客户端/浏览器解析
支持多站点
支持自定义日志格式
后端是 Go + Gin,前端是 Vue3 + Vite + PrimeVue,数据库就一个 SQLite,够轻量。
docker 运行:

dockerrun -d --name nginxpulse\-p8088:8088\-p8089:8089\-eWEBSITES='[{"name":"主站","logPath":"/share/log/nginx/access.log","domains":["example.com"]}]'\-v /your/nginx/logs/access.log:/share/log/nginx/access.log:ro\-v$(pwd)/var/nginxpulse_data:/app/var/nginxpulse_data\magiccoders/nginxpulse:latest

把 /your/nginx/logs/access.log 换成你自己的日志路径就行。

Docker Compose
如果喜欢 compose,也行:

version:"3.8"services: nginxpulse: image:magiccoders/nginxpulse:latest container_name:nginxpulse ports: -"8088:8088"-"8089:8089"environment: WEBSITES:'[{"name":"主站","logPath":"/share/log/nginx/access.log","domains":["example.com"]}]'volumes: -./nginx_logs/access.log:/share/log/nginx/access.log:ro -./var/nginxpulse_data:/app/var/nginxpulse_data restart:unless-stopped

跑起来之后:

前端面板:http://localhost:8088
后端 API:http://localhost:8089

多网站怎么配?
如果你有多个站点,WEBSITES 传数组就行:

WEBSITES='[ {"name":"主站","logPath":"/logs/main.log","domains":["www.example.com"]}, {"name":"博客","logPath":"/logs/blog.log","domains":["blog.example.com"]} ]'

日志按天切割的话,支持通配符:

{"logPath":"/logs/access-*.log"}

.gz 压缩日志也能直接解析,不用手动解压。

几个实用功能

  1. 远端日志拉取
    日志不在本机?没关系,支持 SFTP、HTTP、S3/OSS 三种方式拉取远端日志。

比如 SFTP:

{"id":"sftp-main","type":"sftp","host":"1.2.3.4","port":22,"user":"nginx","auth":{"keyFile":"/secrets/id_rsa"},"path":"/var/log/nginx/access.log"}
  1. Push Agent
    如果服务器在内网或者边缘节点,可以用 Agent 主动推送日志。在日志服务器上跑一个轻量 agent,实时把日志推到 NginxPulse 主服务。

  2. 自定义日志格式
    不是默认的 combined 格式?可以自定义。支持两种方式:

方式一:直接写 log_format 语法

{"logFormat":"$remote_addr-$remote_user[$time_local]\"$request\"$status$body_bytes_sent"}

方式二:正则(命名分组)

{"logRegex":"^(?P<ip>\\S+) - (?P<user>\\S+)\\[(?P<time>[^\\]]+)\\]..."}
  1. Caddy 也支持
    用 Caddy 的朋友也能用,配置 logType: “caddy” 就行,会按 JSON 格式解析。

  2. 访问控制
    生产环境可以加个密钥:

ACCESS_KEYS='["your-secret-key"]'

访问时需要带上 X-NginxPulse-Key 请求头,前端会自动弹窗让你输入。

常见问题
Q:跑起来后日志明细是空的?

A:多半是权限问题。给日志目录和数据目录加个权限:

chmod-R777/path/to/logs /path/to/nginxpulse_data

Q:有访问但是 PV/UV 都是 0?

A:默认排除内网 IP。如果想统计内网流量,把 PV_EXCLUDE_IPS 设成空数组:

PV_EXCLUDE_IPS='[]'

单体部署
如果不想用 Docker,可以构建成单个可执行文件:

./scripts/build_single.sh

会生成一个内置前端的二进制文件,直接运行就能同时提供前后端服务。支持 amd64 和 arm64。

最后
GitHub 地址:

https://github.com/likaia/nginxpulse

在线演示:

https://nginx-pulse.kaisir.cn/
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:37:56

AI应用软件的外包开发

在国内进行AI应用软件的外包开发&#xff0c;2026年的市场环境已经从“盲目跟风”转向了“结果导向”。现在的外包不再只是写代码&#xff0c;更多是模型调优、私有数据工程与业务逻辑的深度解构。 以下是关于国内AI外包开发的避坑指南与核心考量&#xff1a; 一、 核心外包类…

作者头像 李华
网站建设 2026/4/18 8:18:45

设计心得—如何使用多线程开发

一、多线程开发 多线程开发的特点就是并发&#xff08;并行&#xff09;&#xff0c;早期的多线程说直白一些就为了更好的利用CPU&#xff0c;而后期的多线程就更广泛了&#xff0c;甚至CPU的增多&#xff0c;并行与并发已经不再有明显的界限。利用多线程进行并发的开发&#x…

作者头像 李华
网站建设 2026/4/17 6:24:29

DIODES AL8862SP-13 SOP8 LED驱动

特性宽输入电压范围&#xff1a;5V至60V输出电流最高可达1A内置60V NDMOS开关典型输出电流精度为4%单引脚通过直流电压或PWM信号实现开/关和亮度控制高效率&#xff08;最高可达97%&#xff09;LED短路保护固有LED开路保护电流检测电阻短路保护、过温关断最高1MHz开关频率提供采…

作者头像 李华
网站建设 2026/4/18 3:28:29

参考文献崩了?当红之选的AI论文网站 —— 千笔

你是否曾为论文选题发愁&#xff1f;是否在深夜面对空白文档无从下笔&#xff1f;是否反复修改却总觉得表达不够专业&#xff1f;论文写作的种种难题&#xff0c;让无数专科生感到焦虑和无助。而如今&#xff0c;一款专为学生打造的AI论文工具——千笔AI&#xff0c;正悄然改变…

作者头像 李华
网站建设 2026/4/18 3:33:43

如何成为一名网络安全工程师?网络安全零基础入门到精通,收藏这一篇就够了

从事网络安全工程师的职业生涯是网络安全领域的一条充满挑战和回报的道路。在本文中&#xff0c;您将了解网络安全工程师的具体工作、要遵循的教育途径、所需的关键技能和认证以及职业前景。利用我们在网络安全培训方面的深厚专业知识&#xff0c;我们提供实用且高度相关的见解…

作者头像 李华
网站建设 2026/4/18 3:25:31

50% 的 Java 程序员都不知道的 Jackson 高级用法!

50% 的 Java 程序员都不知道的 Jackson 高级用法&#xff01; Jackson 是目前 Java 生态中使用最广泛的 JSON 序列化/反序列化库&#xff0c;但绝大多数人只用到了它的最基础功能&#xff08;JsonProperty、ObjectMapper.readValue 等&#xff09;&#xff0c;其实它还有非常多…

作者头像 李华