大家好,我是 Java陳序員。
對於運維人員、站長來説,Nginx 日誌是分析網站訪問情況的核心,但逐行翻閲、手動統計 PV/UV、排查 IP 歸屬地的過程,耗時又費力。尤其是多站點部署時,不同日誌文件切換、數據零散的問題,更是讓人效率大打折扣。
今天,給大家推薦一款開源的輕量級 Nginx 日誌分析可視化面板,告別逐行翻日誌!
關注微信公眾號:【Java陳序員】,獲取開源項目分享、AI副業分享、超200本經典計算機電子書籍等。
項目介紹
nginxpulse —— 一款輕量級 Nginx 訪問日誌分析與可視化面板,提供實時統計、PV 過濾、IP 歸屬地與客户端解析。
功能特色:
- 輕量化部署:支持 Docker 部署,無需搭建複雜依賴環境,基於 Go 語言開發,後端高性能低消耗,搭配 SQLite 輕量化數據庫,無需額外部署數據庫服務
- 多維度日誌分析:支持同時掛載多個 Nginx 日誌文件,自動統計 PV/UV、訪問頻次、請求狀態碼、客户端(瀏覽器/設備)、訪問時段等維度數據
- 智能 IP 解析:IP 歸屬地按地域分類展示,可快速定位異常訪問 IP、高頻訪問區域
- 靈活適配:支持適配非標準 Nginx 日誌格式,只需調整解析規則配置,無需修改代碼,還適配 Caddy 服務器日誌解析,一站式搞定多類 Web 服務器日誌分析
技術棧:
- 後端:
Go+SQLite+Ip2Region - 前端:
Vue3+Vite+TypeScript
快速上手
Docker 部署
1、拉取鏡像
docker pull magiccoders/nginxpulse:latest
2、創建掛載目錄
mkdir -p /data/software/nginxpulse
3、運行容器
docker run -d --name nginxpulse \
-p 8088:8088 \
-p 8089:8089 \
-e WEBSITES='[{"name":"Java陳序員","logPath":"/share/log/nginx/access.log","domains":["chencoding.top","chencoding.top"]}]' \
-e ACCESS_KEYS='["key-1","key-2"]' \
-v /data/software/nginx/access.log:/share/log/nginx/access.log:ro \
-v /data/software/nginxpulse:/app/var/nginxpulse_data \
magiccoders/nginxpulse:latest
參數説明:
8088:前端訪問端口8088:後端訪問端口-e WEBSITES:指定網站列表的 JSON 數組,字段:name、logPath、domains(可選)-e ACCESS_KEYS:訪問密鑰列表,為非空數組時,訪問 UI 和 API 都需要提供密鑰
4、瀏覽器訪問
http://{IP/域名}:8088
Docker Compose 部署
1、創建 docker-compose.yml 文件,並寫入如下內容:
version: "3.8"
services:
nginxpulse:
image: magiccoders/nginxpulse:latest
container_name: nginxpulse
ports:
- "8088:8088"
- "8089:8089"
environment:
WEBSITES: '[{"name":"Java陳序員","logPath":"/share/log/nginx/access.log","domains":["chencoding.top","chencoding.top"]}]'
ACCESS_KEYS: '["key-1","key-2"]'
volumes:
- /data/software/nginx/access.log:/share/log/nginx/access.log:ro
- /data/software/nginxpulse:/app/var/nginxpulse_data
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
2、啓動運行
docker compose up -d
日誌文件掛載
- 多日誌文件掛載
WEBSITES 的值是個數組,參數對象中傳入網站名、網址、日誌路徑。例如:
environment:
WEBSITES: '[{"name":"網站1","logPath":"/share/log/nginx/access-site1.log","domains":["www.kaisir.cn","kaisir.cn"]}, {"name":"網站2","logPath":"/share/log/nginx/access-site2.log","domains":["home.kaisir.cn"]}]'
volumes:
- ./nginx_data/logs/site1/access.log:/share/log/nginx/access-site1.log:ro
- ./nginx_data/logs/site2/access.log:/share/log/nginx/access-site2.log:ro
- 日誌目錄掛載
如果有很多個網站要分析,可以考慮將日誌目錄整體掛載進去,然後在 WEBSITES 裏去指定具體的日誌文件即可。例如:
environment:
WEBSITES: '[{"name":"網站1","logPath":"/share/log/nginx/access-site1.log","domains":["www.kaisir.cn","kaisir.cn"]}, {"name":"網站2","logPath":"/share/log/nginx/access-site2.log","domains":["home.kaisir.cn"]}]'
volumes:
- ./nginx_data/logs:/share/log/nginx/
- 壓縮日誌(.gz)掛載
nginxpulse 還支持直接解析 .gz 壓縮日誌,logPath 可指向單個 .gz 文件或使用通配符。例如:
{"logPath": "/share/log/nginx/access-*.log.gz"}
功能體驗
- 概況

- 數據日報

- 實時

- 訪問明細

不管是個人站長、中小企業運維,還是個人開發,nginxpulse 都能幫你告別繁瑣的日誌分析,用最簡單的方式掌握網站訪問數據。快去試試吧~
項目地址:https://github.com/likaia/nginxpulse
最後
推薦的開源項目已經收錄到 GitHub 項目,歡迎 Star:
https://github.com/chenyl8848/great-open-source-project
或者訪問網站,進行在線瀏覽:
https://chencoding.top:8090/#/

我創建了一個開源項目交流羣,方便大家在羣裏交流、討論開源項目。
但是任何人在羣裏打任何廣告,都會被 T 掉。
如果你對這個交流羣感興趣或者在使用開源項目中遇到問題,可以通過如下方式進羣:
關注微信公眾號:【Java陳序員】,回覆【開源項目交流羣】進羣,或者通過公眾號下方的菜單添加個人微信,並備註【開源項目交流羣】,通過後拉你進羣。
大家的點贊、收藏和評論都是對作者的支持,如文章對你有幫助還請點贊轉發支持下,謝謝!