confd+Nacos实现nginx配置文件管理
场景: 由于公司内部站点保护的需求, 将部分的站点添加白名单, 这边的操作是在nginx配置文件中添加如下代码
allow 127.0.0.1:
deny all;
但随之问题也出现了, 需要添加一个的时候 ,我就要1-登录服务器 2-打开配置文件并添加ip配置 3-重载nginx配置
于是乎 就想使用condf+nacos 在界面中添加配置, 保存自动完成配置的加载与服务的重载, 欧力给

[安装]
cd /usr/local/src
wget https://github.com/kelseyhightower/confd/releases/download/v0.16.0/confd-0.16.0-linux-amd64 mkdir -p /opt/confd/bin
mv confd-0.16.0-linux-amd64 /opt/confd/bin/confd
chmod +x /opt/confd/bin/confd # 添加环境变量
export PATH=$PATH:/opt/confd/bin
[配置]
1.创建confd所需目录
confd配置文件默认在/etc/confd中,可以通过参数-confdir指定。目录中包含两个子目录,分别是:conf.d templates mkdir -p /etc/confd/{conf.d,templates} 2.创建confd配置文件
confd会先读取conf.d目录中的配置文件(toml格式),然后根据文件指定的模板路径去渲染模板。
vim /etc/confd/conf.d/nginx.toml
[template]
src = " nginx.conf.tmpl"
dest =
"/usr/local/nginx/conf/nginx.conf"
keys = [
"/nginx/conf",
]
check_cmd = "/usr/local/nginx/sbin/nginx -t
-c {{.src}}"
reload_cmd = "/usr/local/nginx/sbin/nginx
-s reload" 3.创建模板文件
cp /usr/local/nginx/conf/nginx.conf
/etc/confd/templates/nginx.conf.tmpl
vim /etc/confd/templates/nginx.conf.tmpl
内容如下: ···
{{$data := json (getv "/nginx/conf")}} # 注意json后面有空格
{{range $data.blackList}}
deny {{.}};
{{end}}
···
[nacos配置]
在public命名空间创建dataId为nginx.conf的配置文件,group使用默认的DEFAULT_GROUP即可,配置内容为json格式
{
"blackList":["10.0.1.104","10.0.1.103"]
}

[使用]
启动confd,从Nacos获取配置文件,渲染Nginx配置文件。backend设置成nacos,node指定访问的Nacos服务地址,watch让confd支持动态监听
confd -backend nacos -node http://console.nacos.io:80 -watch
[验证]
1.查看渲染的配置文件中是否添加了配置项
2.访问看是否生效
curl http://$IP:8080/ -i
HTTP/1.1 200 OK
[其他]
使用Redis
confd -backend redis -node 127.0.0.1:6379/0 -client-key auth密码 -watch -backend 指定后端服务
-node 指定服务地址
-client-key 指定密钥
-watch 不断监听变化
-onetime 执行一次即退出
使用consul:
confd -backend consul -node xxx.xxx.xxx.xxx:8500 -watch 注: 这里只需要配置对应的域名+端口就可以
添加systemctl服务:
vim /lib/systemd/system/confd.service
[Unit]
Description="nginx confd"
Requires=network-online.target
After=network-online.target [Service]
User=root
Group=root
ExecStart=/opt/confd/bin/confd -backend consul -node 172.18.105.124:8500 -watch
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=65536 [Install]
WantedBy=multi-user.target
这样在consul面板上添加对应的key,nginx配置会动态进行更新
问题点:
1.在使用高版本的confd的时候 已经后端不止nacos了, 所以可以选择其他的服务作为支持, 例如consul,zookeeper,etcd等
现支持
etcd
consul
vault
environment variables
file
redis
zookeeper
dynamodb
rancher
ssm (AWS Simple Systems Manager Parameter Store)
现在测试使用的是Redis, 后面会将后端服务换成consul
confd:https://github.com/kelseyhightower/confd
参考:
- https://nacos.io/zh-cn/blog/nacos-confd.html
- https://mds316.top/archives/nacos%E5%AE%89%E8%A3%85%E5%92%8C%E9%9B%86%E7%BE%A4%E9%83%A8%E7%BD%B2
confd+Nacos实现nginx配置文件管理的更多相关文章
- confd + Nacos | 无代码侵入的配置变更管理
Java技术栈 www.javastack.cn 优秀的Java技术公众号 来文来自阿里中间件投稿 作者:风卿,Nacos Committer,阿里巴巴开发工程师 为什么要支持confd,老的应用配置 ...
- 使用etcd+confd管理nginx配置
1.前言 最近在项目中用nginx做反向代理,需要动态生成nginx的配置.大概流程是用户在页面上新增域名.http或https协议以及端口信息,后台会根据域名自动生成一个nginx的server配置 ...
- nginx配置之深入理解
继上一篇<debian+nginx配置初探--php环境.反向代理和负载均衡>成功之后,有点小兴奋,终于不用整lvs那么复杂来搞定负载,但还是有很多概念没弄清楚. 什么是CGI.FastC ...
- Haproxy安装部署文档及多配置文件管理方案
一.部署安装 二.软件配置 三.系统服务 四.日志配置 五.小结 文章目录 最近我在负责一个统一接入层的建设项目,涉及到 Haproxy 和 ospf 的运维部署,本文分享一下我在部署 Haproxy ...
- nacos集群配置
一. 环境准备 Nacos 依赖 java环境来运行.如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用: 64 bit OS,支持 Lin ...
- nacos在nginx下集群以及数据库问题
持久化mysql时指定数据库编辑application.properties spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql ...
- nginx配置反向代理或跳转出现400问题处理记录
午休完上班后,同事说测试站点访问接口出现400 Bad Request Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...
- Linux安装LAMP开发环境及配置文件管理
Linux主要分为两大系发行版,分别是RedHat和Debian,lamp环境的安装和配置也会有所不同,所以分别以CentOS 7.1和Ubuntu 14.04做为主机(L) Linux下安装软件,最 ...
- Windos环境用Nginx配置反向代理和负载均衡
Windos环境用Nginx配置反向代理和负载均衡 引言:在前后端分离架构下,难免会遇到跨域问题.目前的解决方案大致有JSONP,反向代理,CORS这三种方式.JSONP兼容性良好,最大的缺点是只支持 ...
- Windows下Nginx配置SSL实现Https访问(包含证书生成)
Vincent.李 Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https ...
随机推荐
- compileSdkVersion, minSdkVersion 和 targetSdkVersion,傻傻分不清楚【转】
原文 https://blog.csdn.net/gaolh89/article/details/79809034 在Android Studio项目的app/build.gradle中,我们可以看到 ...
- 宿舍管理系统——单链表+结构体实现入住、退房和查询功能(C语言版)
本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评论区留言,也欢迎直接加QQ:2961439733,备注博客园或CSDN即可): 编辑工具:Dev-C++(版本:5.11.0.0) 编译器:TD ...
- sql转JSON为表
创建方法 : /****** Object: UserDefinedFunction [dbo].[parseJSON] Script Date: 2017/7/11 18:27:28 ******/ ...
- Figma 学习笔记 – Auto Layout
用途 Auto Layout 有点像 CSS 的 Flex, 它还带有 responsive 的概念.使用它以后可以替代掉不少 constraints 的写法. 用法 一个 parent 抱着多个 c ...
- 控制请求并发数量:p-limit 源码解读
p-limit 是一个控制请求并发数量的库,他的整体代码不多,思路挺好的,很有学习价值: 举例 当我们同时发起多个请求时,一般是这样做的 Promise.all([ requestFn1, reque ...
- i mean
马上教师节了,咱们不给教练整坨大的吗
- A Proof of Golden Section of Fibonacci Sequence
Update on 2024/6/25 10:40 (UTF+8) : Add the Part Five and correct some words Hello, I'm glad to show ...
- [python] 基于PyOD库实现数据异常检测
PyOD是一个全面且易于使用的Python库,专门用于检测多变量数据中的异常点或离群点.异常点是指那些与大多数数据点显著不同的数据,它们可能表示错误.噪声或潜在的有趣现象.无论是处理小规模项目还是大型 ...
- 关于CycleGAN损失函数的可视化理解
看了<Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks>这篇论文,大致了解了C ...
- 什么是SPA页面,它的优缺点?
什么是SPA spa是单页面应用(single page web application),浏览器会一开始就加载所需要的html.css.javascript.一旦页面加载完毕,整个页面就不会因为用户 ...