请教一个批量管理 nginx 的实践 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dreamramon
V2EX    问与答

请教一个批量管理 nginx 的实践

  •  
  •   dreamramon 2023-06-20 08:30:43 +08:00 3472 次点击
    这是一个创建于 844 天前的主题,其中的信息可能已经有所发展或是发生改变。
    手上有 n 台 nginx 要管理,主要是作为反代。。。现在的应用场景:
    一个应用前面有 30 个 nginx ,然后每个 ng 主要是反代不同的规则,现在业务变化要变更,就需要手工登陆上去,一个一个改,改完了 reload ,不知道大家有没有什么更好的方案可以集中式管理,或者通过 api 批量更新的。。。
    注:因为不同的机房,没有上 k8s 。。。
    26 条回复    2023-06-21 12:40:08 +08:00
    Trim21
        1
    Trim21  
       2023-06-20 08:34:38 +08:00 via Android
    你原本这么原生态都能接受,那我建议你本地改完了 rsync 上去,然后 ssh user@host sudo nginx -s reload…
    v0ker
        2
    v0ker  
       2023-06-20 08:39:25 +08:00
    我们是在 git 上统一管理,配置更新之后上传到仓库,再到机器上拉取代码
    datoujiejie221
        3
    datoujiejie221  
       2023-06-20 08:40:20 +08:00 via iPhone   1
    ansible 一把梭
    beshe
        4
    beshe  
       2023-06-20 08:58:17 +08:00
    git 管理版本,jenkins 负责部署
    ik
        5
    ik  
       2023-06-20 09:04:39 +08:00 via iPhone
    没有不同主机上同一个 server_name:port 对应不同业务的情况,就维护一整套配置文件,所有主机同步就行?
    sdwgyzyxy
        6
    sdwgyzyxy  
       2023-06-20 09:07:30 +08:00
    kong ?
    lazyfighter
        7
    lazyfighter  
       2023-06-20 09:10:27 +08:00
    在阿里基于 camel 开发过一版, 我们当时还有 lua 的跨机房路由,青春呀,具体直接 github ,大众点评开源的
    cominghome
        8
    cominghome  
       2023-06-20 09:22:24 +08:00
    1. 起一个仓库管理 nginx conf 目录
    2. 通过 rsync 或者 ansible 分发配置,reload nginx
    msywkylemon
        9
    msywkylemon  
       2023-06-20 09:47:03 +08:00
    Nginx Proxy Manager? 不知道是不是楼主需要的
    https://nginxproxymanager.com/
    yufeng0681
        10
    yufeng0681  
       2023-06-20 10:11:53 +08:00
    写脚本,探测哪个 nginx 的配置修改了,自动进行升级部署
    dolphintwo
        11
    dolphintwo  
       2023-06-20 10:19:06 +08:00
    ansible 一把梭
    johz
        12
    johz  
       2023-06-20 11:01:03 +08:00
    APISIX
    直接在 web 控制台上管理
    wonderblank
        13
    wonderblank  
       2023-06-20 11:04:41 +08:00
    ansible 一把梭
    IDAEngine
        14
    IDAEngine  
       2023-06-20 11:08:46 +08:00
    Jenkins 批量部署
    ytmsdy
        15
    ytmsdy  
       2023-06-20 11:13:38 +08:00
    丢到 Github 上,做个 Action 。发现有 merge 到 main 分支的话,直接触发 action ,全部重新更新一遍。
    onetown
        16
    onetown  
       2023-06-20 11:46:36 +08:00
    ansible 来管理配置和分发吧, 代替你手工修改
    huangzxx
        17
    huangzxx  
       2023-06-20 11:47:19 +08:00
    ansible 一把梭
    dylanninin
        18
    dylanninin  
       2023-06-20 15:53:32 +08:00
    ansible 一般就够了
    zcl0621
        19
    zcl0621  
       2023-06-20 16:26:18 +08:00
    之前做了个工具 ansible 负责推 nginx 配置和 reload
    在网页上编辑和修改配置 管理服务器的密钥地址啥的 管理 nginx 的配置文件等等
    然后一键执行
    感觉挺符合你的要求的。。。 不过项目代码早就没了 都快 5 年了
    surfwave
        20
    surfwave  
       2023-06-20 18:25:33 +08:00
    ansible 一把梭
    learncat
        21
    learncat  
       2023-06-20 18:40:30 +08:00
    @dreamramon nginx 开启 upsync , 统一使用一个 consul 做配置中心, 通过不同的 path 前缀区分 nginx 集群。 实现动态修改。

    后面的 api 的操作,就变成了调用 consul 接口动态写入配置。
    cnoder
        22
    cnoder  
       2023-06-20 19:15:25 +08:00
    jenkins rsync
    apisix
    37Y37
        23
    37Y37  
       2023-06-20 19:59:23 +08:00 via Android
    之前处理过这需求,etcd+confd ,简单 django 写个 webui ,浏览器上就处理了 https://blog.ops-coffee.cn/s/uguvv4jl4yivnztuepdc8a
    yuedanwork
        24
    yuedanwork  
       2023-06-20 22:13:15 +08:00
    Fabric

    个人觉得轻度简单使用的话,1 版本的会比较好用

    [文档 - Fabric 1]( https://www.fabfile.org/installing-1.x.html)

    另外,不是非 nginx 不可的也可以试试 nginx unit 平替,配置可复用,这个可以用 api 管理
    tiezlk443
        25
    tiezlk443  
       2023-06-21 00:37:34 +08:00 via Android
    ansible
    qile1
        26
    qile1  
       2023-06-21 12:40:08 +08:00 via Android
    window 系统下的 nginx 有啥办法管理,有 8 台服务器,每两个多月更新免费 ssl 证书,偶尔更新下配置文件
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5205 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 09:24 PVG 17:24 LAX 02:24 JFK 05:24
    Do have faith in what you're doing.
    ubao 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