V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
zealinux
V2EX  ›  NGINX

更新 ssl 证书时痛苦,求推荐比 nginx 好用的反向代理服务

  •  
  •   zealinux · 2021-03-03 10:00:28 +08:00 · 5196 次点击
    这是一个创建于 1372 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有 100+个二级域名, 然后有 nginx 服务有 10+台,

    现在的做法是,上传 ssl 泛域名 ssl 证书到 10+台机器上, 然后更新 100+个配置文件。

    有点痛苦

    有没有什么好的方法,只要在 nginx.conf导入一次就行。 然后各个 conf.d 目录下的配置文件引用这个变量就行。

    这样我以后升级,就只要改 10+个 nginx.conf 就行了。这样就舒服多了。

    或者有没有其他更好的反向代理服务推荐?

    最好是有webui的, 这样不需要登陆到各个机器上编辑文件。

    31 条回复    2021-03-05 08:43:39 +08:00
    dongtingyue
        1
    dongtingyue  
       2021-03-03 10:02:56 +08:00
    为啥要更新配置文件?不是只要更新证书就可以了么
    matolv
        2
    matolv  
       2021-03-03 10:03:57 +08:00
    rsycn 把证书覆盖掉就行了,不需要其他操作
    zengxs
        3
    zengxs  
       2021-03-03 10:04:00 +08:00
    Nginx 有个 include 指令就是用来干这个的

    Debian/Ubuntu 的 Nginx 配置中默认有一个 snippet 目录,就是用来存放一些通用配置片段的,然后在其他配置文件中 include 就行了
    Slartibartfast
        4
    Slartibartfast  
       2021-03-03 10:04:40 +08:00 via iPhone
    写个脚本就行了
    zengxs
        5
    zengxs  
       2021-03-03 10:05:34 +08:00
    #1 确实,只要更新证书文件就行了,完全不需要更新配置,刚刚都没反应过来 😂
    Love4Taylor
        6
    Love4Taylor  
       2021-03-03 10:09:00 +08:00
    caddy ?
    imdong
        7
    imdong  
       2021-03-03 10:09:38 +08:00
    写个脚本,定时执行,从特定地址下载证书并解压到特定目录.

    然后重启 nginx,

    现在,你甚至都不需要登陆到对应服务器,也不用改 nginx 了.

    当然,更换证书只要文件名相同也不需要修改配置文件吧?

    简单代码如下(盲写 未测试)

    cron 0 0 1 * *

    ====

    wget https://xxx.com/ca.tar.gz -O /tmp/ca.tar.gz

    tar -zxf /tmp/ca.tar.gz -C /etc/nginx/ca

    nginx -s reload
    hxndg
        8
    hxndg  
       2021-03-03 10:12:14 +08:00
    我司多机器组件 ha 的时候是 ha 有个同步脚本
    用的 rsync,是从本机登录到目标机器上,然后执行从本机到目标机器的拷贝
    写个脚本就成。
    CoreJa
        9
    CoreJa  
       2021-03-03 10:27:24 +08:00   ❤️ 1
    更新证书+reload nginx 的事情,为啥要改 nginx 配置?
    noahzh
        10
    noahzh  
       2021-03-03 10:35:04 +08:00
    推荐使用 traefik.
    xuanbg
        11
    xuanbg  
       2021-03-03 10:35:19 +08:00
    买个通配符证书,失效只需要更新几个证书文件就行了
    xuanbg
        12
    xuanbg  
       2021-03-03 10:36:25 +08:00
    为啥要更新 conf ?替换 10+服务器上面的证书文件不就好了吗?
    xiwangzishi
        13
    xiwangzishi  
       2021-03-03 10:44:22 +08:00
    http://www.confd.io/ 试一试这个
    paranoia
        14
    paranoia  
       2021-03-03 10:50:39 +08:00
    webui? gitee 上有个 nginxWebUI,我这发不了链接,楼主可以去搜搜看
    saytesnake
        15
    saytesnake  
       2021-03-03 10:56:07 +08:00
    ...include 是干嘛的...不就是做这个的么
    d0m2o08
        16
    d0m2o08  
       2021-03-03 11:02:07 +08:00
    这么多机器不试试 ansible 一把梭么?
    guxingke
        17
    guxingke  
       2021-03-03 11:28:26 +08:00
    conf 还是要更新的,证书名字最好能体现一些信息,比如过期时间之类的,方便校验。
    配置改完之后的发布和 reload,建议配合 ansible 来做 10+ 个实例很快的
    eason1874
        18
    eason1874  
       2021-03-03 11:29:56 +08:00
    什么配置都不用动,证书和密钥文件名不变,rsync 直接覆盖同步过去,然后 systemctl reload nginx 就行了
    tinyRat
        19
    tinyRat  
       2021-03-03 11:33:09 +08:00
    caddy?
    eason1874
        20
    eason1874  
       2021-03-03 11:35:16 +08:00
    如果证书文件名一定要变,就把这两行独立出来一个文件:

    ssl_certificate /etc/nginx/ssl/domain.crt;
    ssl_certificate_key /etc/nginx/ssl/domain.key;

    比如命名成 ssl_cert.conf 放在 ssl 目录,然后其他配置文件应该填这两行的地方改成:

    include /etc/nginx/ssl/ssl_cert.conf;

    然后每次变更证书,就更新这个文件,然后 reload nginx
    henyi2211
        21
    henyi2211  
       2021-03-03 11:37:47 +08:00
    traefik 我用于管理 docker 容器, 用的挺爽的, 可以自动申请证书, 还能服务发现....
    上手再简单点就好了, 花了一天看官方文档, 才弄清楚原理和使用
    SenLief
        22
    SenLief  
       2021-03-03 12:01:42 +08:00
    如果是买的证书不都是 1 年起步吗?那 1 年更新一次也没多少时间啊。
    liuzhaowei55
        23
    liuzhaowei55  
       2021-03-03 12:08:09 +08:00 via iPhone
    nginx 有的版本更新证书后要重启?
    ik
        24
    ik  
       2021-03-03 12:10:37 +08:00 via iPhone
    ansible copy

    nfs 共享证书目录不都可以吗
    clf
        25
    clf  
       2021-03-03 13:03:21 +08:00
    自动签发的脚本配置好,就很方便了。
    isnullstring
        26
    isnullstring  
       2021-03-03 13:54:16 +08:00
    不是直接更新证书文件么?配置也不用改的
    cominghome
        27
    cominghome  
       2021-03-03 14:20:20 +08:00
    楼上已经很多人回复了,做一个软链接的事情,别搞复杂了
    xmumiffy
        28
    xmumiffy  
       2021-03-03 14:45:16 +08:00 via Android
    审题的话 我推荐用 caddy
    wakzz
        29
    wakzz  
       2021-03-03 15:30:36 +08:00
    使用 Kong 替代 Nginx
    dot
        30
    dot  
       2021-03-03 15:32:17 +08:00
    有个叫 Caddy 的 Web server,自带证书申请和续期……啥都不用管~
    Showfom
        31
    Showfom  
       2021-03-05 08:43:39 +08:00 via iPhone
    @liuzhaowei55 所有版本都需要 reload 重启倒不是必须
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3377 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 353ms · UTC 11:56 · PVG 19:56 · LAX 03:56 · JFK 06:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.