NginxPulse 开源了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
MagicCoder
V2EX    程序员

NginxPulse 开源了

  •  
  •   MagicCoder 1 天前 3411 次点击

    前言

    上周写了个nginx 日志分析系统,这几天花了点时间把代码整理了下,现已开源。

    欢迎各位有需要的开发者自取。

    项目地址

    demo-img-1.png

    demo-img-2.png

    写在最后

    我是神奇的程序员,一位前端开发工程师。

    如果你对我感兴趣,请移步我的个人网站,进一步了解。

    第 1 条附言    4 小时 44 分钟前
    演示站点部署好了: https://nginx-pulse.kaisir.cn/
    50 条回复    2026-01-15 00:14:00 +08:00
    rimworld
        1
    rimworld  
       1 天前
    颜值很棒,谢谢开源喵
    Aruforce
        2
    Aruforce  
       1 天前 via Android   1
    蹭 plus 的名干啥…
    cnrting
        3
    cnrting  
       1 天前 via iPhone
    骂得很难听
    jiangzm
        4
    jiangzm  
       1 天前
    应该和 nginx proxy manager 结合下比较好
    MagicCoder
        5
    MagicCoder  
    OP
       1 天前
    @Aruforce 啊? Pulse 是脉搏、心跳的意思 我取这个名的寓意是:Nginx 的心跳与生命监测系统
    J0hanD
        6
    J0hanD  
       1 天前 via iPhone
    感谢大佬开源
    MagicCoder
        7
    MagicCoder  
    OP
       1 天前
    @jiangzm 我比较偏向于各干各个的,分散开比较好
    honkew
        8
    honkew  
       1 天前
    需要对蜘蛛区分
    WizardLeo
        9
    WizardLeo  
       1 天前
    感谢大佬开源!
    这个项目可以接入多个 nginx 吗?比如把数个 nginx 的日志通过 rclone 之类的方式聚合到一个目录下以文件夹区分开这样。
    clarkyu
        10
    clarkyu  
       1 天前
    感谢开源, UI 很不错
    a4526047
        11
    a4526047  
       1 天前
    用的甲骨文,下载镜像:no matching manifest for linux/arm64/v8 in the manifest list entries
    MagicCoder
        12
    MagicCoder  
    OP
       1 天前
    @WizardLeo 支持的
    MagicCoder
        13
    MagicCoder  
    OP
       1 天前
    @a4526047 是不是镜像源设置到其他地方去了
    MagicCoder
        14
    MagicCoder  
    OP
       1 天前
    @honkew 现在有区分蜘蛛
    zepc007
        15
    zepc007  
       1 天前
    @Aruforce ???
    a1274598858
        16
    a1274598858  
       1 天前
    不会 go ,大佬能否构建个 releases
    dianso
        17
    dianso  
       1 天前
    我 nginx 用的官方镜像,docker compose 运行,这如何使用啊
    MagicCoder
        18
    MagicCoder  
    OP
       1 天前
    @dianso 这个跟镜像没关系,只需要传入 nginx 的日志文件路径就可以了
    MagicCoder
        19
    MagicCoder  
    OP
       1 天前
    @a1274598858 可以,我晚点写下自动构建脚本,放 GitHub
    54xavier
        20
    54xavier  
       1 天前

    1panel 面板通过 OpenResty 配置的网站,volume 配置有点儿头疼
    MagicCoder
        21
    MagicCoder  
    OP
       1 天前
    @54xavier
    -v ./nginx_data/logs/all/access.log:/var/log/nginx/access.log:ro \
    MagicCoder
        22
    MagicCoder  
    OP
       1 天前
    @54xavier 我那里直接挂载 nginx 目录写错了
    SkyHive
        23
    SkyHive  
       1 天前
    能不能支持批量导入日志文件,因为我是把 nginx 当 lb 来用了,希望可以直接挂载 /var/log/nginx 这样的目录,日志文件的命名规则都是 ${domain_name}.access.log ${domain_name}.error.log 这样的
    perfectlife
        24
    perfectlife  
       1 天前 via Android
    能把日志格式拆出来,做成可以自定义的就完美了
    whitewash
        25
    whitewash  
       1 天前
    点进来前以为 nginx plus 开源了
    jianqiao031313
        26
    jianqiao031313  
       1 天前
    赞一个,要是 WEBSITES 支持配置文件就更好了,比如直接读个 json 啥的,后面修改完配置文件直接重启 docker 就好了~
    谢谢 op 开源~
    54xavier
        27
    54xavier  
       1 天前
    @MagicCoder #21 不能挂载到 docker 内部 /var/log/nginx ,docker 内部也是用的 nginx ,刚好内部 nginx 也是这个路径,内部 nginx 读写 access.log 的时候会报错。
    DejavuMoe
        28
    DejavuMoe  
       1 天前
    可以直接读取 Nginx 日志目录 /var/nginx/log 下的所有日志吗?手动单个站点挂载太麻烦了。
    颜值很高,感谢开源
    Astralume
        29
    Astralume  
       1 天前
    @54xavier #27

    ```
    docker run -d --name nginxpulse \
    -p 8088:8088 \
    -p 8089:8089 \
    -e WEBSITES='[{"name":"主站","logPath":"/out_nginx_log/xxxxxxxx.log","domains":["example.com","www.example.com"]}]' \
    -e SERVER_PORT=":8089" \
    -v /out_side_nginx_data_logs:/out_nginx_log:ro \
    -v "$(pwd)/var/nginxpulse_data:/app/var/nginxpulse_data" \
    magiccoders/nginxpulse:latest
    ```

    这个写法容易理解些
    Astralume
        30
    Astralume  
       1 天前
    WEBSITES 的配置是否考虑 logPath 支持列表或者正则表达,因为很多时候某个 Domain 的日志都会有 xxx.access.log 和 xxx.error.log
    ruanimal
        31
    ruanimal  
       1 天前
    @Aruforce 虽然英文不好,但是敏感肌呢
    54xavier
        32
    54xavier  
       1 天前
    还有一个问题,没有账号密码,存在一定的泄露问题,我暂时用 1panel 的密码访问解决了
    liuliuliuliu
        33
    liuliuliuliu  
    PRO
       1 天前
    不错,但是有点不满足我的需求,拿来抄一份自用吧
    MagicCoder
        34
    MagicCoder  
    OP
       1 天前
    @jianqiao031313 支持 json 的,容器里的 configs/nginxpulse_config.json 就是所有的配置,你可以挂载到主机,直接改这个 json 文件也是可以的
    MagicCoder
        35
    MagicCoder  
    OP
       1 天前
    @54xavier 这个鉴权问题就不在这个项目做了 专事专用,不做那么高的复杂度
    MagicCoder
        36
    MagicCoder  
    OP
       1 天前
    @DejavuMoe 抱歉,这里我文档没写清楚,实际是挂载对应的.log 文件的,在 websites 里进行声明,文档已经更新了,你再看看
    MagicCoder
        37
    MagicCoder  
    OP
       1 天前
    @liuliuliuliu 可以说下你的需求,我看看能不能通过配置的方式来支持
    MagicCoder
        38
    MagicCoder  
    OP
       1 天前
    @SkyHive 支持的,文档已经更新了,可以看下 多个日志文件如何挂载 这个章节的内容
    MagicCoder
        39
    MagicCoder  
    OP
       1 天前
    @perfectlife 可以自定义的,文档已更新,WEBSITES 就是干这个事儿的,日志文件随意指定
    MagicCoder
        40
    MagicCoder  
    OP
       1 天前
    @54xavier 嗯嗯 这个问题是我文档写错了,已更正。
    MagicCoder
        41
    MagicCoder  
    OP
       1 天前
    @DejavuMoe 支持的,文档已更新,详见 多个日志文件如何挂载 章节
    louisxxx
        42
    louisxxx  
       1 天前
    适合没能力折腾 ELK 的
    gearfox
        43
    gearfox  
       19 小时 40 分钟前
    @whitewash 一样
    SkyHive
        44
    SkyHive  
       19 小时 20 分钟前
    @MagicCoder #38 OK ,回头试试
    pota
        45
    pota  
       18 小时 40 分钟前
    我司在实际过程中发现 360 蜘蛛和 bing 蜘蛛会存在无蜘蛛标识的情况,尤其是 360 蜘蛛,经常变 ip 段,但是无头,建议使用官方页面每日更新蜘蛛段 https://www.so.com/help/spider_ip.html 进行判断,对于 bing 蜘蛛可以使用 https://www.bing.com/toolbox/bingbot.json 内容作为标识。百度蜘蛛不说了,目前没有官方发布页,只能按 UA 判断了
    honus
        46
    honus  
       13 小时 12 分钟前
    支持 nginx proxy manager 压缩日志解析不
    MagicCoder
        47
    MagicCoder  
    OP
       13 小时 4 分钟前
    @honus 日志格式满足就可以
    MagicCoder
        48
    MagicCoder  
    OP
       13 小时 3 分钟前
    @pota OK 我看看
    54xavier
        49
    54xavier  
       11 小时 36 分钟前
    自从用了这个,发现每天访问自己网站的都是蜘蛛,以及零星的莫名其妙的访客
    MagicCoder
        50
    MagicCoder  
    OP
       4 小时 44 分钟前
    演示站点已部署: https://nginx-pulse.kaisir.cn/
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     903 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 20:58 PVG 04:58 LAX 12:58 JFK 15:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86