【caddy】 caddy反向代理api服务 聚合go-zero微服务 放过nginx让caddy来快速实现吧

news2024/11/17 1:44:38

帮助go-zero开发者聚合api

  • 相关视频
  • 一、go-zero 微服务整体架构
    • 1、微服务的基本架构
    • 2、go-zero 微服务的 api
        • authrpc.api 文件
        • routes.go 文件
  • 二、本地开发的痛点
    • 1、本地多个端口开启的服务
    • 2、apifox、postman
  • 三、caddy
    • 1、mac下caddy安装
    • 2、配置我们自己的caddyfile
        • 1)创建我们的caddyfile
        • 2)配置caddy反向代理
        • 3)启动caddy
        • 4)caddy最佳实践
        • 5) caddy 官方文档
  • 四、ubuntu服务器安装caddy

相关视频

B站视频链接如下:https://www.bilibili.com/video/BV1mr4y147p3
欢迎朋友素质三连
在这里插入图片描述

一、go-zero 微服务整体架构

这里只是为了说明caddy的作用,其实使用Nginx也是没问题
只是想让开发者可以更方便的管理的自己api接口,进行本地的开发调试

1、微服务的基本架构

这里只是一个简易的架构说明
在这里插入图片描述

2、go-zero 微服务的 api

这里随便拿出一个接口进行说明
可以看到,我们这里使用一个prefix前缀来标记我们的请求都会带有这个前缀

authrpc.api 文件

路径:/Users/ctra_wl/Desktop/simbaM/simbam-go-auth/api/auth.api

@server(
	jwt: Auth
	group: root
	prefix: simbam-auth
)
service AuthApi {
	@handler resetPasswordWithLoginReg // 登录状态下-重置密码
	get /auth/user/reset (UserResetReq) returns (CommonResp)
}

routes.go 文件

路径:/Users/ctra_wl/Desktop/simbaM/simbam-go-auth/api/internal/handler/routes.go

server.AddRoutes(
	[]rest.Route{
		{
			Method:  http.MethodGet,
			Path:    "/auth/user/reset",
			Handler: root.ResetPasswordWithLoginRegHandler(serverCtx),
		},
	},
	rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	rest.WithPrefix("/simbam-auth"),
)

二、本地开发的痛点

在这里插入图片描述

1、本地多个端口开启的服务

下面是2个yaml文件,可以看到每一个api服务的端口必须都不相同
(当然这里的端口名你可以随意起,因为到线上的测试和生产环境会被k8 svc接管)
在这里插入图片描述
在这里插入图片描述

2、apifox、postman

当这2个服务都启动时,我们需要配置多个端口来满足对应微服务的请求
此时如果我们想在1个端口去完成对其他的端口聚合(代理)
此时我们就需要一个网关帮我们做转发
下面caddy出场

三、caddy

1、mac下caddy安装

这里默认安装的是caddy2
即:我们要使用caddy2的语法(和1有一些稍微不同)

brew install caddy

2、配置我们自己的caddyfile

其实玩过Nginx的小伙伴对.config文件一定不陌生
这个caddyfile就是这个自定义的config
但是caddyfile 非常轻量

1)创建我们的caddyfile

# 找到我们合适的磁盘路径
vim caddyfile

2)配置caddy反向代理

解释一下,下面的代码含义

:1234 {
	reverse_proxy /simbam-auth/* 127.0.0.1:8888
	reverse_proxy /simbam-datasource/* 127.0.0.1:1068
}
  • :1234为我们开启 localhost:1234 这个web服务
  • reverse_proxy反向代理的关键字
  • 因为我们之前所有的微服务都是按模块化加上了前缀,这里可见优势的体现
  • 当请求中包含 /simbam-auth/* (*为任意值)时,转发请求到 8888 端口
  • 当请求中包含 /simbam-datasource/* (*为任意值)时,转发请求到 1068 端口

3)启动caddy

前台启动方式

caddy run --config ~/Desktop/caddyfile --adapter caddyfile

后台启动方式

caddy start --config ~/Desktop/caddyfile --adapter caddyfile

caddyfile则是我们上面自己创建的caddyfile文件

前台启动成功示意图
在这里插入图片描述

4)caddy最佳实践

apifox请求
在这里插入图片描述
127.0.0.1:8888 auth服务打印日志
在这里插入图片描述

5) caddy 官方文档

caddy文档链接

这里附上一份caddy启动文档
在这里插入图片描述

四、ubuntu服务器安装caddy

推荐如下方式:
https://www.a5idc.net/helpview_1296.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/438595.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBootWeb入门-HTTP协议

一、SpringBootWeb-快速入门 建好springboot工程之后,只留下这几个文件。 这个是springboot的父工程,其实就是继承 二、HTTP协议-概述 •HTTP-概述 三、HTPP协议-请求协议 四、HTTP协议-响应协议 一、状态码大类 状态码分类说明1xx响应中——临时状态码…

buuctf -2

目录 你竟然赶我走 大白 N种方法解决 [ACTF2020 新生赛]Include 1 php://filter的一些学习 [ACTF2020 新生赛]Exec [强网杯 2019]随便注 你竟然赶我走 1.下载文件,得到一张图片 2.放进010分析,在文件尾得到flag 大白 1.根据题目提示&#xff0…

Python安装模块总失败?一次教你学会镜像安装

人生苦短,我用python 安装模块总是不成功? 这次一次性讲清楚~ 还是安装报错指路:点击此处跳转文末名片获取 为什么会出现安装模块失败? 首先我们要知道 其实大部分我们在用的模块, 都是歪果仁开发的, 然而我们在输入 “pip install 模块名” 的时候,…

「 JVM 」常见的垃圾收集器Garbage collector(GC)

「 JVM 」常见的垃圾收集器Garbage collector(GC) 参考&鸣谢 【JVM系统学习之路】常见垃圾回收器 山间木匠 Java 的七种垃圾收集器 | Linux 中国 Jayashree Huttanagoudar 带你走近Java虚拟机到底有哪些经典的垃圾收集器 码上遇见你 文章目录 「 JV…

2023.04.17 运行开源代码tinyriscv步骤及遇到问题

tinyriscv:https://gitee.com/liangkangnan/tinyriscv/tree/verilator 如有错误之处还请不吝赐教! 1、安装gcc工具链 下载gcc工具链(百度云链接,提取码:yaib),使用下面的命令解压到/opt/riscv32目录下: …

Spring定时任务常用Cron表达式

目录 一、SpringBoot定时任务 定时任务概述 创建定时任务 代码开启定时任务 执行结果 (单线程) 多线程处理定时任务 执行结果(并发) 二、Cron详解 Cron表达式是什么 Cron表达式的结构 每个域可出现的字符类型和各字符的…

花生采摘

[NOIP2004 普及组] 花生采摘 题目描述 鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!――熊字”。 鲁宾逊先生和多多都…

linux 安装神州通用数据库 V7.0

linux 安装神州通用数据库 V7.0 操作系统、数据库1、官方下载链接2、windows客户端下载链接3、官方安装手册4、安装前准备3.1、创建安装用户3.2、以root 用户修改神通数据库安装包的所有者为shentong 用户3.3、以root 用户创建神通数据库主目录并修改所有者为shentong 用户3.4、…

学成在线笔记+踩坑(2)——【内容模块】课程基础查询,swagger+数据库字典+Httpclient+跨域

目录 1.【内容模块】需求分析 2.【内容模块】模块工程的结构 3.【课程查询功能1】通用 3.1 分析数据模型 3.2 mybatis-plus代码生成器 3.3 内容模块聚合api,model,service模块 3.4 接口设计分析 3.5 【基础模块】分页查询模型类 3.6【基础模块】日期配置类 3.7【内容…

Ae 入门系列之九:表达式

与使用关键帧相比,Ae 的表达式 Expression也用于控制属性值。 只不过使用表达式能简化操作,大大提高工作效率,使复杂动画的制作变得更加轻松。 ◆ ◆ ◆ 表达式语法基础 表达式基于标准的 JavaScript 语言。 如果熟悉脚本语言编程&#xff…

AutoGPT初次探索:免费体验、使用指南与心得总结

AutoGPT初次探索:免费体验、使用指南与心得总结 写在前面的废话一、部署 Auto-GPT二、试运行 Auto-GPT三、我踩过的坑四、后续探索 AutoGPT是一种基于GPT的自动化系统,为GPT提供了一个身体和内存,使其能够自主执行任务,例如市场分…

自己的完整c++ cuda包

pytorch关于c的所有文档集合 Welcome to PyTorch Tutorials — PyTorch Tutorials 2.0.0cu117 documentation 1.前置条件 使用编辑器clion,安装好cudatoolkit,cudnn,pytorch环境,编译工具gcc等等。 记得要设置好cudatoolkit的…

【C++】哈希的应用——布隆过滤器

哈希的应用——布隆过滤器 文章目录 哈希的应用——布隆过滤器一、布隆过滤器的概念与性质1.布隆过滤器的引出2.布隆过滤器的概念3.布隆过滤器的误判4.布隆过滤器的应用场景5.布隆过滤器优缺点6.如何选择哈希函数个数和布隆过滤器长度 二、布隆过滤器的实现1.布隆过滤器基本框架…

机器学习——SVM原理

问:支持向量机是基于经验风险最小化(ERM) 原则构建的,因此有更好的泛化性能。 答:错误。支持向量机是一种基于结构风险最小化原则构建的机器学习算法,它可以通过寻找合适的分割超平面来实现分类任务,并且具有较好的泛…

设计模式:软件设计原则

文章目录 1.开闭原则2.里氏代换原则3.依赖倒转原则4.接口隔离原则5.迪米特法则6.合成复用原则 在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件开…

QGIS绘制一张地图学习笔记01——配准栅格数据并解决配准导出的栅格文件不能显示的问题

1、进入配准工具主页面 首先,打开我们的绘制底图或者叫配准目标底图,我这里用的是高德的在线地图,具体qgis加载在线地图的方法见我前面的章节。加载的在线地图如下所示。 接着我们点击上方菜单栏的 栅格 菜单,点击菜单中的 配准工…

软件测试-测试用例案例及思维导图展示

目录 自动售货机的测试用例 一个杯子的测试用例 一支笔的测试用例 朋友圈点赞的测试用例 登录模块 购物车的测试用例 Windows对文件的复制粘帖功能的测试用例 自动售货机的测试用例 一个杯子的测试用例 一支笔的测试用例 朋友圈点赞的测试用例 功能测试 1点赞后是否显示…

docker安装rabbitMq集群

一 机器准备 准备三台虚拟机: 192.168.56.102 102.168.56.103 102.168.56.104 二 拉取镜像 在三台虚拟机上分别执行: docker pull rabbitmq:3.9.5-management 三 启动容器 103: docker run -d --hostname node2 --ad…

React--》React组件变化每次都会导致重新渲染,如何解决?

目录 React.memo useCallback useMemo React.memo React组件会在两种情况下下发生渲染 第一种:当组件自身的state发生变化时 第二种:当组件的父组件重新渲染时 第一种情况下重新渲染无可厚非,state都变化了组件自然应该重新进行渲染&…

7.1 基本运放电路(1)

集成运放的应用首先表现在它能构成各种运算电路上,并因此而得名。在运算电路中,以输入电压作为自变量,以输出电压作为函数;当输入电压变化时,输出电压将按一定的数学规律变化,即输出电压反映输入电压某种运…