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

 

posted @   难止汗  阅读(934)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示