现在有 100+个二级域名, 然后有 nginx 服务有 10+台,
现在的做法是,上传 ssl 泛域名 ssl 证书到 10+台机器上, 然后更新 100+个配置文件。
有点痛苦。
有没有什么好的方法,只要在 nginx.conf导入一次就行。 然后各个 conf.d 目录下的配置文件引用这个变量就行。
这样我以后升级,就只要改 10+个 nginx.conf 就行了。这样就舒服多了。
或者有没有其他更好的反向代理服务推荐?
最好是有webui的, 这样不需要登陆到各个机器上编辑文件。
1
dongtingyue 2021-03-03 10:02:56 +08:00
为啥要更新配置文件?不是只要更新证书就可以了么
|
2
matolv 2021-03-03 10:03:57 +08:00
rsycn 把证书覆盖掉就行了,不需要其他操作
|
3
zengxs 2021-03-03 10:04:00 +08:00
Nginx 有个 include 指令就是用来干这个的
Debian/Ubuntu 的 Nginx 配置中默认有一个 snippet 目录,就是用来存放一些通用配置片段的,然后在其他配置文件中 include 就行了 |
4
Slartibartfast 2021-03-03 10:04:40 +08:00 via iPhone
写个脚本就行了
|
5
zengxs 2021-03-03 10:05:34 +08:00
#1 确实,只要更新证书文件就行了,完全不需要更新配置,刚刚都没反应过来 😂
|
6
Love4Taylor 2021-03-03 10:09:00 +08:00
caddy ?
|
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 |
8
hxndg 2021-03-03 10:12:14 +08:00
我司多机器组件 ha 的时候是 ha 有个同步脚本
用的 rsync,是从本机登录到目标机器上,然后执行从本机到目标机器的拷贝 写个脚本就成。 |
9
CoreJa 2021-03-03 10:27:24 +08:00 1
更新证书+reload nginx 的事情,为啥要改 nginx 配置?
|
10
noahzh 2021-03-03 10:35:04 +08:00
推荐使用 traefik.
|
11
xuanbg 2021-03-03 10:35:19 +08:00
买个通配符证书,失效只需要更新几个证书文件就行了
|
12
xuanbg 2021-03-03 10:36:25 +08:00
为啥要更新 conf ?替换 10+服务器上面的证书文件不就好了吗?
|
13
xiwangzishi 2021-03-03 10:44:22 +08:00
http://www.confd.io/ 试一试这个
|
14
paranoia 2021-03-03 10:50:39 +08:00
webui? gitee 上有个 nginxWebUI,我这发不了链接,楼主可以去搜搜看
|
15
saytesnake 2021-03-03 10:56:07 +08:00
...include 是干嘛的...不就是做这个的么
|
16
d0m2o08 2021-03-03 11:02:07 +08:00
这么多机器不试试 ansible 一把梭么?
|
17
guxingke 2021-03-03 11:28:26 +08:00
conf 还是要更新的,证书名字最好能体现一些信息,比如过期时间之类的,方便校验。
配置改完之后的发布和 reload,建议配合 ansible 来做 10+ 个实例很快的 |
18
eason1874 2021-03-03 11:29:56 +08:00
什么配置都不用动,证书和密钥文件名不变,rsync 直接覆盖同步过去,然后 systemctl reload nginx 就行了
|
19
tinyRat 2021-03-03 11:33:09 +08:00
caddy?
|
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 |
21
henyi2211 2021-03-03 11:37:47 +08:00
traefik 我用于管理 docker 容器, 用的挺爽的, 可以自动申请证书, 还能服务发现....
上手再简单点就好了, 花了一天看官方文档, 才弄清楚原理和使用 |
22
SenLief 2021-03-03 12:01:42 +08:00
如果是买的证书不都是 1 年起步吗?那 1 年更新一次也没多少时间啊。
|
23
liuzhaowei55 2021-03-03 12:08:09 +08:00 via iPhone
nginx 有的版本更新证书后要重启?
|
24
ik 2021-03-03 12:10:37 +08:00 via iPhone
ansible copy
nfs 共享证书目录不都可以吗 |
25
clf 2021-03-03 13:03:21 +08:00
自动签发的脚本配置好,就很方便了。
|
26
isnullstring 2021-03-03 13:54:16 +08:00
不是直接更新证书文件么?配置也不用改的
|
27
cominghome 2021-03-03 14:20:20 +08:00
楼上已经很多人回复了,做一个软链接的事情,别搞复杂了
|
28
xmumiffy 2021-03-03 14:45:16 +08:00 via Android
审题的话 我推荐用 caddy
|
29
wakzz 2021-03-03 15:30:36 +08:00
使用 Kong 替代 Nginx
|
30
dot 2021-03-03 15:32:17 +08:00
有个叫 Caddy 的 Web server,自带证书申请和续期……啥都不用管~
|
31
Showfom 2021-03-05 08:43:39 +08:00 via iPhone
@liuzhaowei55 所有版本都需要 reload 重启倒不是必须
|