现状

我们想把自己的 http 服务注册 nacos,然后使用nginx 来实现反向代理。官方提供了一个方案是 通过 java 来订阅nacos 。当服务 ip 出现变化的时候。重新生成一份 nginx 配置文件,把然后 通过nginx -s reload 让nginx 进程重启来加载 新的配置文件。

这种方式在 QPS 较高的情况下会造成服务抖动。如果nginx 代理的服务特别多。那主要一个服务出现变化 nginx 就会重启,一天可能重启很多次。

新的方案

我们要解决这个问题,还是得老老实实对nginx 做修改,新开发一个nacos 模块来订阅后端服务。模块已经开发完成,推荐一下.。GitHub - zhwaaaaaa/nginx-nacos-upstream: nginx dynamic upstream module for nacos. subcribe nacos and update address automaticly without reloading config

使用步骤

  1. 首先得把这个带 nacos 模块的 nginx 下载下来然后编译。
git clone https://github.com/zhwaaaaaa/nginx-nacos-upstream.git
cd nginx-nacos-upstream
./configure --add-module=modules/auxiliary --add-module=modules/nacos && make

2. 启动一个nacos(略,参考nacos 官方文档)。

3. 准备一个 http服务来测试一下。使用 spring+nacos 最方便。一共只有几行代码。https://github.com/zhwaaaaaa/springmvc-nacos-registry。返回自己当前使用的端口

@SpringBootApplication
@EnableDiscoveryClient
public class RegistryDemoApplication {public static void main(String[] args) {SpringApplication.run(RegistryDemoApplication.class, args);}@RestControllerpublic static class RegistryController {@Value("${server.port}")private int port;@GetMapping("/hello")public String helloWorld() {return "Current server is running on " + port;}}
}

配置文件指定 nacos 服务地址

server:port: 8080
spring:application:name: springmvc-nacos-democloud:nacos:discovery:server-addr: 127.0.0.1:8848

4. 使用带 nacos 模块的 nginx 来代理这个服务。准备配置文件

nacos {server_list localhost:8848; # nacos 服务器列表,空格隔开udp_port 19999; #udp 端口号udp_ip 127.0.0.1; #udp ip 地址。udp_bind 0.0.0.0:19999; # 绑定udp 地址error_log logs/nacos.log info;default_group DEFAULT_GROUP; # 默认的nacos group namecache_dir cmake-build-debug/nacos/;
}
http {upstream s {# 这里得指定 为 spring 的项目名,nacos 使用appname 作为 dataiduse_nacos_address data_id=springmvc-nacos-demo;}server {# ... other configlocation ^~ / {proxy_pass http://s;}}
}

启动nginx 。 curl http://127.0.0.1:9999/hello 。

敬请玩吧

Nginx 使用 NACOS 实现服务发现和反向代理。不用reload相关推荐

  1. Bloom是REST API缓存中间件,充当负载平衡器Nginx和REST API服务之间的反向代理

    Bloom是REST API缓存中间件,充当负载平衡器Nginx和REST API服务之间的反向代理 翻译来源:https://gitee.com/yunwisdoms/bloom Bloom是RES ...

  2. 《Nacos(2) - 服务发现》

    <Nacos(2) - 服务发现> 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! <Nacos-服务发现> <Nacos(2) - 服务发现&g ...

  3. 聊一聊Yarp结合Nacos完成服务发现

    背景 Yarp 这个反向代理出来后,相信还是有不少人在关注的. 在 Yarp 中,反向代理的配置默认也是基于配置文件的,也有不少大佬已经把这个配置做成了数据库配置+可视化界面. 仔细想了想,做成数据库 ...

  4. 这就是你日日夜夜想要的docker!!!---------docker+consul+ nginx集成分布式的服务发现与注册架构

    文章目录 一.Docker consul容器服务更新与发现理论 1.基本架构 2.基于nginx和consul构建高可用及自动发现的Docker服务架构 3.Docker consul自动发现服务架构 ...

  5. nginx动态配置及服务发现那些事

    标题,  <闲聊nginx动态配置及服务发现的那些事> - 这次的准备闲聊关于nginx服务发现的话题,  按照我以往写文章的性子,估计会迁移一些主题.  毕竟单纯聊nginx和动态服务发 ...

  6. nacos的服务发现详解

    Nacos源码系列整体栏目 [一]nacos服务注册底层源码详解 [二]nacos服务发现底层源码详解 [三]nacos的心跳机制底层源码详解 [四]nacos配置中心的底层源码详解 nacos的服务 ...

  7. Nginx详解+身份验证+虚拟主机+反向代理负载均衡

    一.差异对比 Apache Nginx 配置相对复杂 配置相对简单 原生支持动态和静态页面 支持静态页面 模块相对安全 高性能模块出产迅速.社区活跃 BUG相对较少,消耗资源较多 BUG相对较多,节省 ...

  8. nginx配置禁特定路径下的反向代理

    近期因为项目需要再一次配置了nginx 这次的的需求设计到字符串处理 需要把<域名或ip>/xhr_api/开头的请求转发到内网某机器,同时移除掉xhr_api,这里直接记录下结果,配置非 ...

  9. Springboot集成nacos实现服务发现和配置中心

    Nacos是阿里巴巴开源的服务发现和配置中心的中间件,springboot集成nacos比较方便,只需要以下三步: 1.依赖配置(pom文件) <properties><spring ...

最新文章

  1. mysql主从复制(master-slave)_mysql主从复制------Master-Slave搭建及注意事项
  2. 提高IT运维综合管理能力,实现业务服务管理
  3. 深入理解 Kotlin Coroutine (一)
  4. 计算机二级web前端,web前端:原生js之Math对象
  5. 总是想得太简单?试试我的方法
  6. 带有HttpClient的自定义HTTP标头
  7. c语言设计一维数组,一维数组 (1)C语言程序设计.pdf
  8. 系统架构师学习笔记-分布式系统
  9. php 判断两个数组对象是否相等_PHP是世界上最好的语言
  10. php正则表达式 什么,php正则表达式是什么?(代码实例)
  11. day14 匿名函数
  12. MyBatis-Plus updateById方法更新不了空字符串/null解决方法
  13. java解压服务器文件夹,java解压7z文件
  14. 【PS】抠图,快速选择工具
  15. switch日文键盘打中文_从塞尔达到动森,游戏中使用的中文字体有什么问题?
  16. 教室录播系统方案_《课堂教学录播专用教室》建设方案及装备标准
  17. Elasticsearch Refresh vs Flush
  18. 互联网寒冬,程序员如何逆流而上?
  19. Unity 3D模型展示之模型高亮
  20. 手机怎么伪原创火山小视频 本地短视频去水印在线

热门文章

  1. 一篇文章带你搞定数学建模中的元胞思想(11年土壤重金属污染示例讲解含代码)
  2. 跟着王进老师学开发Python篇第五季:面向对象篇-王进-专题视频课程
  3. win11使用git客户端 下载代码
  4. 从网易云音乐的缓存中获取mp3文件
  5. 五个维度着手MySQL的优化
  6. WINDOWS程式设计--计时器
  7. 毕业设计-基于微信小程序的校园社交运动系统
  8. Brup Intruder
  9. 转自51CTO的帖子——宅男程序员给老婆的计算机课程
  10. Android 编译 Rom 刷机