场景: 由于公司内部站点保护的需求, 将部分的站点添加白名单, 这边的操作是在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配置文件管理的更多相关文章

  1. confd + Nacos | 无代码侵入的配置变更管理

    Java技术栈 www.javastack.cn 优秀的Java技术公众号 来文来自阿里中间件投稿 作者:风卿,Nacos Committer,阿里巴巴开发工程师 为什么要支持confd,老的应用配置 ...

  2. 使用etcd+confd管理nginx配置

    1.前言 最近在项目中用nginx做反向代理,需要动态生成nginx的配置.大概流程是用户在页面上新增域名.http或https协议以及端口信息,后台会根据域名自动生成一个nginx的server配置 ...

  3. nginx配置之深入理解

    继上一篇<debian+nginx配置初探--php环境.反向代理和负载均衡>成功之后,有点小兴奋,终于不用整lvs那么复杂来搞定负载,但还是有很多概念没弄清楚. 什么是CGI.FastC ...

  4. Haproxy安装部署文档及多配置文件管理方案

    一.部署安装 二.软件配置 三.系统服务 四.日志配置 五.小结 文章目录 最近我在负责一个统一接入层的建设项目,涉及到 Haproxy 和 ospf 的运维部署,本文分享一下我在部署 Haproxy ...

  5. nacos集群配置

    一.    环境准备 Nacos 依赖 java环境来运行.如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用: 64 bit OS,支持 Lin ...

  6. nacos在nginx下集群以及数据库问题

    持久化mysql时指定数据库编辑application.properties spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql ...

  7. nginx配置反向代理或跳转出现400问题处理记录

    午休完上班后,同事说测试站点访问接口出现400 Bad Request  Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...

  8. Linux安装LAMP开发环境及配置文件管理

    Linux主要分为两大系发行版,分别是RedHat和Debian,lamp环境的安装和配置也会有所不同,所以分别以CentOS 7.1和Ubuntu 14.04做为主机(L) Linux下安装软件,最 ...

  9. Windos环境用Nginx配置反向代理和负载均衡

    Windos环境用Nginx配置反向代理和负载均衡 引言:在前后端分离架构下,难免会遇到跨域问题.目前的解决方案大致有JSONP,反向代理,CORS这三种方式.JSONP兼容性良好,最大的缺点是只支持 ...

  10. Windows下Nginx配置SSL实现Https访问(包含证书生成)

    Vincent.李   Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https ...

随机推荐

  1. 【转】AddMvcCore,AddControllers,AddControllersWithViews,AddRazorPages的区别

    1.services.AddMvcCore()只註冊運行 Controller/Razor Pages 必要的核心服務,確保 Pipeline 程序可動作,其餘如像 Data Annotation M ...

  2. 【YashanDB知识库】手动停止统计信息自动收集任务导致的性能变差

    [问题分类]功能使用 [关键字]统计信息收集 [问题描述]UAT对外演示环境因统计信息收集任务引起数据库整理性能变慢无应急处理手段 [问题原因分析] ● DROP_JOB程序用于删除一个非执行状态下的 ...

  3. Go 编程-mysql数据库操作

    一.环境准备 在Go语言中连接MySQL数据库通常使用database/sql包配合一个MySQL驱动,比如github.com/go-sql-driver/mysql 安装github.com/go ...

  4. python脚本之requests库上传文件

    一.前言 在学习的时候,发现有一个AWD的文件上传执行漏洞,突然想着批量对不同靶机进行操作并get_flag.思路简单,但是没构造 过文件上传的requests 的post请求的payload.便记录 ...

  5. 画流程图、状态图、时序图、甘特图的JS库-mermaid-js

    参考地址:https://github.com/mermaid-js/mermaid 原生使用方式: <!DOCTYPE html> <html> <head> & ...

  6. Node.js开发博客项目笔记-http请求处理(1)

    处理get与post请求示例代码: const http = require('http'); const querystring = require('querystring'); const se ...

  7. 使用vue-cli4快速搭建项目环境、使用webpack4打包自己的library类库、封装vue插件并发布

    快速创建 使用官方推荐的vue-cli创建项目如下: # 安装 Vue Cli npm install -g @vue/cli # 创建一个项目 vue create vanttest # 创建完成后 ...

  8. Angular Material 18+ 高级教程 – CDK Scrolling

    Angular CDK 的意义 经过之前两篇文章 CDK Portal 和 CDK Layout の Breakpoints,我相信大家已经悟到了 CDK 的意义. CDK 有 3 个方向: 包装 B ...

  9. RxJS 系列 – Error Handling Operators

    前言 前几篇介绍过了 Creation Operators Filter Operators Join Creation Operators 这篇继续介绍 Error Handling Operato ...

  10. IOI2000 邮局 加强版 题解

    [IOI2000] 邮局 加强版 题解 考虑动态规划,设 \(f_{i,j}\) 为经过了 \(i\) 个村庄,正在建第 \(j\)​ 个邮局的最优距离. 以及 \(w_{i,j}\) 表示区间 \( ...