V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dreamramon
V2EX  ›  问与答

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

  •  
  •   dreamramon · 2023-06-20 08:30:43 +08:00 · 2860 次点击
    这是一个创建于 523 天前的主题,其中的信息可能已经有所发展或是发生改变。
    手上有 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   ·   实用小工具   ·   2641 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:55 · PVG 10:55 · LAX 18:55 · JFK 21:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.