您现在的位置是:首页 >技术杂谈 >【caddy】 caddy反向代理api服务 聚合go-zero微服务 放过nginx让caddy来快速实现吧网站首页技术杂谈

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

CTRA王大大 2023-05-26 20:00:04
简介【caddy】 caddy反向代理api服务 聚合go-zero微服务 放过nginx让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

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。