news 2026/9/30 15:59:06

一款好用的 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/9/29 23:30:10

DeepSeek是如何思考的?一文读懂大模型的工作原理

DeepSeek&#xff08;以及所有类似的大模型&#xff09;在回答你的问题时&#xff0c;并不是像搜索引擎那样去“调取”或“查询”一个后台数据库。 它不会去翻阅它训练时看过的资料&#xff0c;然后找出一段话复制给你。它的工作方式要更加神奇和复杂。 一、DeepSeek是如何“回…

作者头像 李华
网站建设 2026/9/27 3:16:48

从自测到部署:DMXAPI如何为AI编程提供全方位的技术保障?

前言&#xff1a;AI编程的“死亡之谷”与技术护城河2026年&#xff0c;全球AI应用开发成功率出现了一个令人深思的数据&#xff1a;从概念验证到生产部署&#xff0c;仅有18%的AI项目能够成功跨越这个“死亡之谷”。那些失败的82%&#xff0c;并非因为创意不足或技术不先进&…

作者头像 李华
网站建设 2026/9/29 8:56:50

Linux 内存映射与显存操作深度解析

Linux 内存映射与显存操作深度解析 一、内存映射基础概念 1. 什么是内存映射&#xff1f; 内存映射&#xff08;Memory Mapping&#xff09;是一种将文件或设备直接映射到进程地址空间的技术&#xff0c;使得应用程序可以像访问内存一样访问文件或设备。通过 mmap() 系统调用&a…

作者头像 李华
网站建设 2026/9/27 2:47:27

柑橘叶片病害数据集(5类)

该数据集包含健康的柑橘叶和4类柑橘叶病Citrus_Canker_Diseases_Leaf_Orange&#xff1a;拥有11248张照片Citrus_Nutrient_Deficiency_Yellow_Leaf_Orange&#xff1a;拥有12800张照片Healthy_Leaf_Orange&#xff1a;6384张照片Multiple_Diseases_Leaf_Orange:4800张照片Young…

作者头像 李华
网站建设 2026/9/30 12:13:53

程序员有必要参加软考吗?

程序员有必要参加软考吗&#xff1f; 答案是&#xff1a;大多数情况下没有必要&#xff0c;但少数特定情况下非常有必要&#xff0c;甚至是“不得不考”。 下面从不同角度给你一个比较清晰、务实的判断框架&#xff0c;帮助你自己决定要不要考。 一、先看“没必要考”的主要…

作者头像 李华
网站建设 2026/9/30 15:46:18

数字校园气象站 示范校园气象站

问&#xff1a;这款气象站的核心定位是什么&#xff1f;和普通气象站相比&#xff0c;专为校园环境设计的亮点体现在哪里&#xff1f; 答&#xff1a;核心定位是校园专属气象科普与微气候监测设备&#xff0c;主打“安全、坚固、易操作、低维护”&#xff0c;核心区别于普通气象…

作者头像 李华