安装apisix套件

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

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

结构目录如下

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/0
etcd:
endpoints: - "http://etcd:2379" authentication:
secret:
secret # secret for jwt 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也可以), 设置转发协议 连接超时等,点击下一步,提交

添加路由转发

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

全匹配转发

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

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

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

路径匹配改写

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

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

路径改写选正则改写

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

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

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

性能测试

R7 3700X 16G

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

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

全匹配,无改写的转发

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

Apache APISIX 的安装和配置请求转发url匹配的更多相关文章

  1. Nginx应用-Location路由反向代理及重写策略 请求转发-URL匹配规则 NGINX Reverse Proxy

    NGINX Docs | NGINX Reverse Proxy https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/ ...

  2. Error-MVCr:找到了多个与 URL 匹配的控制器类型。如果多个控制器上的特性路由与请求的 URL 匹配,则可能会发生这种情况。

    ylbtech-Error-MVCr:找到了多个与 URL 匹配的控制器类型.如果多个控制器上的特性路由与请求的 URL 匹配,则可能会发生这种情况. 1.返回顶部 1. 找到了多个与 URL 匹配的 ...

  3. 转:Nginx+Apache环境的安装与配置

    转:http://www.server110.com/nginx/201404/8817.html 我们依然尽可能采用yum来安装我们需要的软件,由系统官方维护的软件,其安全性和稳定性都值得信赖,并且 ...

  4. Nginx+Apache环境的安装与配置

    我们依然尽可能采用yum来安装我们需要的软件,由系统官方维护的软件,其安全性和稳定性都值得信赖,并且容易管理,升级方便,但是在CentOS和RHEL的官方yum源中暂时没有Nginx等软件包,所以我们 ...

  5. Apache服务器的安装与配置

    文档:http://httpd.apache.org/docs/2.4/ 指令:http://httpd.apache.org/docs/2.4/mod/core.html 一.配置文件 语法 * 主 ...

  6. Nginx配置请求转发location及rewrite规则

    一个示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开头,所以这 ...

  7. Apache Tomcat 7 安装与配置

    下载 首先需要下载tomcat7的安装文件,地址如下: http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.69/bin/apache-tomca ...

  8. Windows 下 Apache HTTP Server 安装、配置以及与 Tomcat 的整合(附图)

    如果您能点开这篇文章,说明您已对熟悉Apache HTTP Server(下文用Apache简称)配置的重要性已很清楚了,本文不在赘述,直接介入正题,请往下阅读: 为便于阅读,列出文章目录: 一.Ap ...

  9. Linux CentOS 7 下 Apache Tomcat 7 安装与配置

    前言 记录一下Linux CentOS 7安装Tomcat7的完整步骤. 下载 首先需要下载tomcat7的安装文件,地址如下: http://mirror.bit.edu.cn/apache/tom ...

随机推荐

  1. Django 小实例S1 简易学生选课管理系统 5 实现注册功能

    Django 小实例S1 简易学生选课管理系统 第5节--实现注册功能 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 本文涉及到的新的额外知识点: ...

  2. 菜鸡的Java笔记 笔记

    // 雇员编号 姓名 职位 基本工资 佣金等信息 package study; class Enr{ private int number; // 编号 private String fullName ...

  3. RocketMQ源码详解 | Broker篇 · 其四:事务消息、批量消息、延迟消息

    概述 在上文中,我们讨论了消费者对于消息拉取的实现,对于 RocketMQ 这个黑盒的心脏部分,我们顺着消息的发送流程已经将其剖析了大半部分.本章我们不妨乘胜追击,接着讨论各种不同的消息的原理与实现. ...

  4. SpringCloud升级之路2020.0.x版-40. spock 单元测试封装的 WebClient(上)

    本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 我们来测试下前面封装好的 WebClient,这里开始,我们使用 spock 编写 gro ...

  5. Java-ASM框架学习-修改类的字节码

    Tips: ASM使用访问者模式,学会访问者模式再看ASM更加清晰 ClassReader 用于读取字节码,父类是Object 主要作用: 分析字节码里各部分内容,如版本.字段等等 配合其他Visit ...

  6. 【机器学习基础】卷积神经网络(CNN)基础

    最近几天陆续补充了一些"线性回归"部分内容,这节继续机器学习基础部分,这节主要对CNN的基础进行整理,仅限于基础原理的了解,更复杂的内容和实践放在以后再进行总结. 卷积神经网络的基 ...

  7. Codeforces 547E - Mike and Friends(AC 自动机+树状数组)

    题面传送门 好久每做过 AC 自动机的题了--做几个题回忆一下罢 AC 自动机能够解决多串匹配问题,注意是匹配,碰到前后缀的问题那多半不在 AC 自动机能解决的范围内. 在初学 AC 自动机的时候相信 ...

  8. P5599【XR-4】文本编辑器

    题目传送门. 题意简述:给定长度为 \(n\) 的文本串 \(a\) 和有 \(m\) 个单词的字典 \(s_i\).\(q\) 次操作,每次求出字典内所有单词在 \(a[l,r]\) 的出现次数,或 ...

  9. CMake 工程调用 Makefile 编译项目

    本文主要介绍如何将一个依赖 Makefile 项目(MIDG)移植到 CMake 上. 首先介绍项目文件结构,文件主要由三个目录组成 3rdParty include src 其中,3rdParty ...

  10. R语言实战(第二版)-part 1笔记

    说明: 1.本笔记对<R语言实战>一书有选择性的进行记录,仅用于个人的查漏补缺 2.将完全掌握的以及无实战需求的知识点略去 3.代码直接在Rsudio中运行学习 R语言实战(第二版) pa ...