安装
推荐直接使用Docker来安装启动Apisix
安装docker
首先下载并安装docker:https://www.docker.com/
下载之后,直接运行安装,安装后打开Docker Desktop,
等它启动完,启动完之后:
此时就是可以在cmd中执行docker等命令了
下载apisix docker仓库
进入某个文件夹,然后执行:
git clone https://github.com/apache/apisix-docker.git
cd apisix-docker/example
启动运行
然后执行:
docker-compose -p docker-apisix up -d
启动一段时间后,看到如下日志就表示启动成功
在启动过程中,apisix默认会占用9080、9443 和 2379 端口
启动之后,可以通过访问http://localhost:9000/来访问apisix dashboard,默认管理员用户密码为admin/admin
后续,我们就可以使用这个Dashboard来对apisix进行各种配置了。
upstream
upstream表示apisix的上游,也就是apisix代理的后端服务,比如SpringBoot微服务,所以直接启动两个SpringBoot应用:
@RestController
public class ZhouyuController {
@Value("${server.port}")
private String port;
@GetMapping("/demo")
public String test() {
return "zhouyu:" + port;
}
}
运行时,通过-Dserver.port来指定端口,运行起来之后,会都apisix的dashboard来配置upstream
简单情况下,只要配置名称和目标节点就行了。
特别注意主机名,不要写成localhost,而是host.docker.internal,因为我们是用的docker,host.docker.internal才表示宿主机。
route
创建完upstream之后,我们就可以来创建route了,也就是路由,路由就是用来进行url映射的。
先设置路由信息,简单情况下只需要填写:
然后再设置上游服务,可以手动设置,也可以选择已有的upstream:
然后可以配置一些plugins,后面再说,直接完成创建。
现在在浏览器上访问http://localhost:9080/demo,就可以访问到刚刚的两个SpringBoot服务了,并且会使用轮询的负载均衡策略(因为我们在创建upstream时,默认使用的就是轮询)。
service
apisix中的服务的作用时,可以把多个路由中公共上游抽象成为服务,所以在创建一个服务时,可以选择服务对应的上游服务与插件,服务创建好了之后,再创建路由时,可以给路由绑定一个服务:
这样就不用再配置路由的上游了:
插件
我们可以在apisix网关上利用插件来做认证、限流等功能。
basic-auth
这是一个基本的用户认证,当访问某个路由时,如果该路由绑定了basic-auth插件,那么此插件会对请求进行认证。
启动该插件并提交,这样当前路由就绑定了一个basic-auth插件。
此时进行访问就需要填写用户和密码,但是我们并没有设置权限,此时,我们就需要利用消费者来设置权限:
这样,再访问http://localhost:9080/demo时,就可以输入
从而正常访问。
key-auth
配置方式和basic-auth差不多,如果basic-auth和key-auth都开启了,那么两个使用到。
在consumer中可以这么配置:
然后访问的话,得在请求头中添加