apisix Admin API配置上游、路由、证书
apisix Admin API配置上游、路由、证书
这里记录了一些个人常用的基本配置,其他详细配置参考官方文档(https://apisix.incubator.apache.org/zh/docs/apisix/3.9/getting-started/README/)。
配置前准备
1、安装yq工具
wget https://github.com/mikefarah/yq/releases/download/v4.44.2/yq_linux_amd64.tar.gz
tar zxf yq_linux_amd64.tar.gz
cp yq_linux_amd64 /usr/local/bin/yq
2、配置admin_key变量
admin_key=$(yq '.deployment.admin.admin_key[0].key' /usr/local/apisix/conf/config.yaml | sed 's/"//g')
3、安装jq工具
yum -y install jq
配置上游
一、创建上游服务
curl http://127.0.0.1:9180/apisix/admin/upstreams \ -H "X-API-KEY: $admin_key" -i -X PUT -d ' { "id": "test-upstream", "name": "mytest-upstream", "desc": "测试upstream", "scheme": "http", "keepalive_pool": { "idle_timeout": 60, "requests": 1000, "size": 320 }, "nodes": [ { "host": "192.168.1.110", "priority": 0, "port": 80, "weight": 1 } ], "timeout": { "connect": 6, "send": 6, "read": 6 }, "type": "roundrobin", "checks": { "active": { "http_path": "/", "type": "http", "concurrency": 10, "timeout": 3, "healthy": { "http_statuses": [ 200, 302 ], "interval": 3, "successes": 1 }, "unhealthy": { "http_statuses": [ 429, 404, 500, 501, 502, 503, 504, 505 ], "interval": 3, "http_failures": 2, "tcp_failures": 2, "timeouts": 2 } } } }'
id为唯一键,如果id已存在,创建则会覆盖之前相同id的配置。
type的类型有:
a、权重轮询:roundrobin,根据权重值比例轮询转发流量。就是以上配置"192.168.1.110:81": 1中的“1”,值越大,权重越高。
b、一致性哈希:chash
c、延迟:ewma,选择延迟最小节点。
b、客户端连接数:least_conn,选择客户端连接数除权重值的值最小的节点。
keepalive_pool设置的是上游服务单独的连接池配置。
timeout设置的是连接、请求、接受数据的超时时间
active为主动检查模式。
priority为优先级配置,默认为0,值越大优先级越高,设置为-1,则作为备用节点。
二、查看上游信息
1.根据id查看对应upstream
curl http://127.0.0.1:9180/apisix/admin/upstreams/test-upstream -H "X-API-KEY: $admin_key" | jq
2.查看已有upstream
curl http://127.0.0.1:9180/apisix/admin/upstreams -H "X-API-KEY: $admin_key" | jq
三、新增上游节点
curl http://127.0.0.1:9180/apisix/admin/upstreams/test-upstream \ -H "X-API-KEY: $admin_key" -X PATCH -i -d ' { "nodes": { "192.168.1.101:80": 1 } }'
四、删除上游节点
curl http://127.0.0.1:9180/apisix/admin/upstreams/test-upstream \ -H "X-API-KEY: $admin_key" -X PATCH -i -d ' { "nodes": { "192.168.1.101:80": null } }'
五、修改上游节点
curl http://127.0.0.1:9180/apisix/admin/upstreams/test-upstream/nodes \ -H "X-API-KEY: $admin_key" -X PATCH -i -d ' { "192.168.1.102:80": 1 }'
六、查看健康检查状态
curl http://127.0.0.1:9090/v1/healthcheck | jq '.[].nodes '| jq '.[] | select (.status == "unhealthy")'
如果nodes信息为空,则需要先进行业务访问后再查。
配置路由
一、创建路由
curl -i "http://127.0.0.1:9180/apisix/admin/routes" -X PUT -H "X-API-KEY: $admin_key" -d ' { "id": "test-route", "name": "mytest-route", "desc": "测试路由", "uri": "/test/*", "upstream_id": "test-upstream" }'
二、配置301跳转。
这里使用redirect插件配置了一个自动加/的功能。
curl -i "http://127.0.0.1:9180/apisix/admin/routes" -X PUT -H "X-API-KEY: $admin_key" -d ' { "id": "test-route-301", "name": "mytest-route-301", "desc": "跳转到测试路由,末尾自动加/", "uri": "/test", "plugins": { "redirect": { "uri": "/test/", "ret_code": 301 } } }'
三、查看所有路由信息
curl http://127.0.0.1:9180/apisix/admin/routes -H "X-API-KEY: $admin_key " | jq
四、查看所有路由的id信息
这里的id是唯一信息,如果配置的id重复了,会覆盖之前的配置,就相当于是修改路由操作。
curl http://127.0.0.1:9180/apisix/admin/routes -H "X-API-KEY: $admin_key " | jq '.list[].value.id'
五、重写
这里使用proxy-rewrite插件,将开头为/test/的uri去掉后再转发给上游服务器。
curl -i "http://127.0.0.1:9180/apisix/admin/routes" -X PUT -H "X-API-KEY: $admin_key" -d ' { "id": "test-route", "name": "mytest-route", "desc": "测试路由", "uri": "/test/*", "upstream_id": "test-upstream", "plugins": { "proxy-rewrite": { "regex_uri": ["^/test/(.*)$", "/$1"] } } }'
六、禁用、启用路由(路由创建默认为启用)
禁用
curl http://127.0.0.1:9180/apisix/admin/routes/test-route \ -H "X-API-KEY: $admin_key" -X PATCH -i -d ' { "status": 0 }'
启用
curl http://127.0.0.1:9180/apisix/admin/routes/test-route \ -H "X-API-KEY: $admin_key" -X PATCH -i -d ' { "status": 1 }'
配置证书
1、创建ssl对象
curl http://127.0.0.1:9180/apisix/admin/ssls/www.test.com -H "X-API-KEY: $admin_key" -X PUT -d ' { "cert" : "'"$(cat /home/test/ssl/www.test.com.pem)"'", "key": "'"$(cat /home/test/ssl/www.test.com.key)"'", "snis": ["www.test.com"] }'
2、创建路由
curl -i "http://127.0.0.1:9180/apisix/admin/routes" -X PUT -H "X-API-KEY: $admin_key" -d ' { "id": "test-route", "name": "mytest-route", "desc": "测试路由", "hosts": ["www.test.com"], "uri": "/test/*", "plugins": { "proxy-rewrite": { "regex_uri": ["^/test/(.*)$", "/$1"] } }, "upstream_id": "test-upstream" }'
3、本地验证
curl --resolve 'www.test.com:9443:127.0.0.1' https://www.test.com:9443/test/ -k -vvv
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)