Apache APISIX 的安装和配置请求转发url匹配

摘要:
路径填/test/*匹配/test/这种请求,/test是不满足的路径改写选正则改写匹配/^test/(.*)表示匹配/test/之后的部分,作为第一个匹配到的值,变量名为$1转发路径模板/$1即取上一个匹配后的参数拼接转发下一步选择上游,选择已经建好的上游性能测试R73700X16G正则匹配后的路径改写转发正则匹配的确会影响性能,不过1w+的rps也够看了全匹配,无改写的转发3w+的rps。强啊,这个.net5.0api原生4w+,我愿称之为最强api网关
安装apisix套件

创建一个apisix文件夹,在apisix文件夹下再创建一个etcd_data文件夹,用来持久化etcd的数据

在apisix文件夹下 新建3个文件 config.yaml, dashboard_conf.yaml, docker-compose.yaml, 分别对应apisix的配置文件 dashboard的配置文件 docker-compose文件

结构目录如下

Apache APISIX 的安装和配置请求转发url匹配第1张

config.yaml

apisix:
  node_listen: 9080
  allow_admin:
    - 0.0.0.0/0 #允许所有网段ip访问, 可改为指定网段
  admin_key:
    - name: "admin"key: edd1c9f034335f136f87ad84b625c8f1
      role: admin

    - name: "viewer"key: 4054f7cf07e344346cd3f287985e76a2
      role: viewer

etd:
  host:
    - "http://etcd:2379"prefix: "/apisix"timeout: 30  #单位 秒

dashboard_config.yaml

conf:
  listen:
    host: 0.0.0.0# 面板监听的地址
    port: 9000# 面板监听的端口
  allow_list:           # 白名单IP段列表
    - 0.0.0.0/0etcd:
    endpoints:         - "http://etcd:2379"
authentication:
  secret:
    secret              # secret forjwt token generation.
                        # NOTE: Highly recommended to modify this value to protect `manager api`.
                        # if it's default value, when `manager api` start, it will generate a random string to replace it.
  expire_time: 3600     # jwt token 过期时间 单位 秒users:                # - username: admin   # 面板登录用户名密码password: admin
    -username: user
      password: user

plugins:                          # 插件列表- api-breaker
  - authz-keycloak
  - basic-auth
  - batch-requests
  - consumer-restriction
  -cors
  # - dubbo-proxy
  - echo# - error-log-logger
  # - example-plugin
  - fault-injection
  - grpc-transcode
  - hmac-auth
  - http-logger
  - ip-restriction
  - jwt-auth
  - kafka-logger
  - key-auth
  - limit-conn
  - limit-count
  - limit-req
  # - log-rotate
  # - node-status
  - openid-connect
  -prometheus
  - proxy-cache
  - proxy-mirror
  - proxy-rewrite
  -redirect
  - referer-restriction
  - request-id
  - request-validation
  - response-rewrite
  - serverless-post-function
  - serverless-pre-function# -skywalking
  - sls-logger
  -syslog
  - tcp-logger
  - udp-logger
  - uri-blocker
  - wolf-rbac
  -zipkin
  - server-info
  - traffic-split

docker-compose.yaml

version: '3'services: 
  gateway: 
    image: apache/apisix
    volumes: 
      - ./config.yaml:/usr/local/apisix/conf/config.yaml:ro
    depends_on: etcd
    ports: 
      - "9080:9080"
      - "9443:9443"
  dashboard:
    image: apache/apisix-dashboard
    volumes: 
      - ./dashboard_conf.yaml:/usr/local/apisix-dashboard/conf/conf.yaml
    ports: 
      - "9000:9000"depends_on: gateway

  etcd:
    image: bitnami/etcd
    user: root
    volumes: 
      - ./etcd_data:/bitnami/etcd
    environment: 
      ETCD_ENABLE_V2: "true"ALLOW_NONE_AUTHENTICATION: "yes"ETCD_ADVERTISE_CLIENT_URLS: "http://0.0.0.0:2379"ETCD_LISTEN_CLIENT_URLS: "http://0.0.0.0:2379"ports:
      - "2379:2379/tcp"
配置url转发

访问 本地IP:9000

用户名密码 admin admin(dashboard_conf.yaml里有配置)

添加上游

左侧菜单--上游 --创建

输入名称 描述, 选择负载均衡算法 配置后端服务主机名(域名或ip也可以), 设置转发协议 连接超时等,点击下一步,提交

Apache APISIX 的安装和配置请求转发url匹配第2张

添加路由转发

左侧菜单--路由--创建

全匹配转发

填写域名和匹配的路径,一般的路径规则是 域名/服务名/方法名

路径一栏可以填写指定xx开头的路径请求转发到指定的上游,也就是后端服务。 路径改写选择 保持原样,则访问的时候是 xxx/Weatherforecast/all, 转发到后端服务的时候也是这样的

Apache APISIX 的安装和配置请求转发url匹配第3张

下一步 选择上游,选择已经建好的上游

路径匹配改写

比如请求网关是 /test/order/all, 然后后端接收的路径应该是 /order/all, 中间的test只是充当服务名的标识。

路径 填 /test/* 匹配/test/ 这种请求, /test 是不满足的

路径改写选正则改写

匹配 /^test/(.*) 表示匹配/test/之后的部分,作为第一个匹配到的值,变量名为$1

转发路径模板 /$1 即取上一个匹配后的参数拼接转发

Apache APISIX 的安装和配置请求转发url匹配第4张

下一步 选择上游,选择已经建好的上游

性能测试

R7 3700X 16G

正则匹配后的路径改写转发

正则匹配的确会影响性能,不过1w+的rps也够看了

Apache APISIX 的安装和配置请求转发url匹配第5张

全匹配,无改写的转发

3w+的rps。强啊, 这个.net 5.0 api原生4w+, 我愿称之为最强api网关

Apache APISIX 的安装和配置请求转发url匹配第6张

免责声明:文章转载自《Apache APISIX 的安装和配置请求转发url匹配》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇STS(Eclipse)修改Project Exploer背景颜色及字体大小超链接a的download属性 实现文件下载功能下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Kubernetes监控etcd集群(自带metrics接口)

Kubernetes用operator部署prometheus上面采用Kubernetes部署prometheus 我们可以使用prometheus来监控自带metrics接口的应用。 etcd是Kubernetes的数据库,自带接口,我们可以用etcd作为实例来看看怎么操作。 一、监控etcd集群 1.1、查看接口信息 二进制和kubeadm安装方式...

kubernetes之kubeadm 安装kubernetes 高可用集群

1. 架构信息 系统版本:CentOS 7.6内核:3.10.0-957.el7.x86_64 Kubernetes: v1.14.1Docker-ce: 18.09.5推荐硬件配置:4核8G Keepalived保证apiserever服务器的IP高可用 Haproxy实现apiserver的负载均衡 2. 节点信息 目前测试为 6 台虚拟机,etcd...

038 Go操作etcd

目录 一、etcd 二、etcd介绍 三、etcd应用场景 3.1 服务发现 3.2 配置中心 3.3 分布式锁 四、为什么用 etcd 而不用ZooKeeper? 4.1 为什么不选择ZooKeeper? 4.2 为什么选择etcd? 五、etcd集群5.1 搭建一个3节点集群示例: 六、Go语言操作etcd 6.1 安装 6.2...

etcd 启动错误

Apr 26 16:17:25 ceph-0 etcd: f281dc69fb4dd3d8 became candidate at term 3574Apr 26 16:17:25 ceph-0 etcd: f281dc69fb4dd3d8 received MsgVoteResp from f281dc69fb4dd3d8 at term 3574Ap...

ETCD节点故障恢复

我在微服务组里面主要负责配置中心的构建,我们的配置中心使用到了ETCD。在我们的内网环境中搭建了三个节点的ETCD,不过这三个节点的ETCD都搭建在同一台机器上。后来机器资源不够了系统直接kill了ETCD,导致内网的ETCD三个节点全部挂掉了。刚开始想逐个启动就完事了,但是按照之前的data-dir启动之后发现三个节点握手存在问题,原因是三个节点缓存数据...

docker network

前言:前面的部分一直都是单机跑docker,但实际生产环境不可能只用一台来跑。肯定会用到多台,因为他们都是内部私有ip,那么多台主机之间的容器如何通信?这个是个很头疼的问题!目前主流几种方法如下: 1、使用路由机制打通网络 2、使用Open vSwitch(OVS)打通网络 3、使用flannel来打通网络 4、使用Quagga来实现自动学习路由第一种:使...