todo概念
$ git clone https://github.com/apache/apisix-docker.git
$ cd apisix-docker/example
$ docker-compose up
直接使用的集成环境phpstudy
安装docker的时候必须要下载的
原因:被windows防火墙拦截了
解决:防火墙开一个入出站规则(允许所有的协议和ip),也可以指定wsl网卡ip
还需要开启
同nginx,上游是对虚拟主机的抽象,即应用层服务或节点的抽象。
上游的作用是按照配置规则对服务节点进行负载均衡,它的地址信息可以直接配置到路由或服务上。当多个路由或服务引用同一个上游时,可以通过创建上游对象,在路由或服务中使用上游的 ID 方式引用上游,减轻维护压力。
APISIX 可以通过路由定义规则来匹配客户端请求,根据匹配结果加载并执行相应的插件,最后把请求转发给到指定的上游服务。路由中主要包含三部分内容:匹配规则、插件配置和上游信息。
Service 也称为服务,是某类 API 的抽象(也可以理解为一组 Route 的抽象)。它通常与上游服务抽象是一一对应的,Route 与 Service 之间,通常是 N:1 的关系。
创建id==1的upstream,会转发到windos的端口中
curl "http://127.0.0.1:9180/apisix/admin/upstreams/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
"type": "roundrobin",
"nodes": {
"{windowsip}:{windowspoty}": 1
}
}'
x-api-key
在apisix/apisix_conf/config.yaml
定义type
:调度方式nodes
:upstream的节点curl "http://127.0.0.1:9180/apisix/admin/routes/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
"methods": ["GET"],
"host": "",
"uri": "/anything/*",
"upstream_id": "1"
}'
curl -i -X GET "http://127.0.0.1:9080/anything/index.html
apisix有3个参数可以限制
limit-conn
: 插件主要用于限制客户端对服务的并发请求数。limit-req
:插件使用漏桶算法限制对用户服务的请求速率。limit-count
:插件主要用于在指定的时间范围内,限制每个客户端总请求个数。example
60秒内,只允许访问2次
curl -i http://127.0.0.1:9180/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri": "/index.html",
"plugins": {
"limit-count": {
"count": 2,
"time_window": 60,
"rejected_code": 503,
"key_type": "var",
"key": "remote_addr"
}
},
"upstream_id": "1"
}
}'
在 APISIX 中,日志可分为访问日志和错误日志。访问日志主要记录了每个请求的上下文信息,错误日志则是 APISIX 运行打印的日志信息,包括 NGINX 和插件相关的信息。APISIX 的日志存储在 ./apisix/logs/
目录下。当然你可以通过一些 APISIX 的日志插件,将 APISIX 的日志发送到指定的日志服务中
apisix会把日志数据以http请求发送,需要自己写服务端接口,把数据写入log文件
https://apisix.apache.org/zh/docs/apisix/getting-started/