APISix如何配置gzip压缩、cache、跨域

news2024/11/25 4:22:00

网上查到的apisix的配置很多都很古老,要改配置文件。其实现在apisix都是使用插件方式实现各种配置,很方便。这里简单介绍下三个常用插件、gzip压缩、cache缓存和跨域插件。这里均使用apisix的Dashboard看板进行配置。

gzip压缩

 1. 打开apisix看板,打开插件模块,点击启用按钮。

2. 在其他分类中找到Gzip组件,点击启用。

3. 在右侧弹出出抽屉中进行配置。参考如下:

重点是红框区域,声明了进行gzip压缩的文件类型。

当然,在插件模块中进行配置效果相同。

4. 具体配置参数信息可以查看文档。

{
  "_meta": {
    "disable": false
  },
  "comp_level": 6,
  "disable": false,
  "min_length": 500,
  "types": [
    "text/html",
    "application/json",
    "application/javascript",
    "application/xml",
    "text/css",
    "text/javascript"
  ],
  "vary": true
}

会直接定位官网文档

根据文档说明,可以调整配置。

cache

apisix有proxy-cache插件,用来处理页面缓存。

1. 打开apisix控制台,点击插件菜单。点击启用按钮进入插件安装界面。

2. 同样在其他分类中,找到proxy-cache插件,点击启用。

3. 编辑配置项。可以参考如下通用配置。

{
  "_meta": {
    "disable": false
  },
  "cache_bypass": [
    "$arg_bypass"
  ],
  "cache_http_status": [
    200
  ],
  "cache_key": [
    "$uri",
    "-cache-id"
  ],
  "cache_method": [
    "GET"
  ],
  "disable": false,
  "hide_cache_headers": false,
  "no_cache": [
    "$arg_test"
  ]
}

4. 根据文档说明进行相关调整。

补充:一般来说,都是对get请求进行cache。如果不希望cache的接口,请在请求头添加nocache标头,例如验证码。当然,改成post也是一个办法。

跨域实现

apisix有cors插件实现跨域。安装方法同上,就不单独说了。

看下配置。

切换成json格式如下:

这里需要注意的点比较多。这里引用下官网说明:

cors

描述#

cors 插件可以让你轻松地为服务端启用 CORS(Cross-Origin Resource Sharing,跨域资源共享)的返回头。

属性#

名称类型必选项默认值描述
allow_originsstring"*"允许跨域访问的 Origin,格式为 scheme://host:port,示例如 https://somedomain.com:8081。如果你有多个 Origin,请使用 , 分隔。当 allow_credential 为 false 时,可以使用 * 来表示允许所有 Origin 通过。你也可以在启用了 allow_credential 后使用 ** 强制允许所有 Origin 均通过,但请注意这样存在安全隐患。
allow_methodsstring"*"允许跨域访问的 Method,比如:GETPOST 等。如果你有多个 Method,请使用 , 分割。当 allow_credential 为 false 时,可以使用 * 来表示允许所有 Method 通过。你也可以在启用了 allow_credential 后使用 ** 强制允许所有 Method 都通过,但请注意这样存在安全隐患。
allow_headersstring"*"允许跨域访问时请求方携带哪些非 CORS 规范 以外的 Header。如果你有多个 Header,请使用 , 分割。当 allow_credential 为 false 时,可以使用 * 来表示允许所有 Header 通过。你也可以在启用了 allow_credential 后使用 ** 强制允许所有 Header 都通过,但请注意这样存在安全隐患。
expose_headersstring"*"允许跨域访问时响应方携带哪些非 CORS 规范 以外的 Header。如果你有多个 Header,请使用 , 分割。当 allow_credential 为 false 时,可以使用 * 来表示允许任意 Header。你也可以在启用了 allow_credential 后使用 ** 强制允许任意 Header,但请注意这样存在安全隐患。
max_ageinteger5浏览器缓存 CORS 结果的最大时间,单位为秒。在这个时间范围内,浏览器会复用上一次的检查结果,-1 表示不缓存。请注意各个浏览器允许的最大时间不同,详情请参考 Access-Control-Max-Age - MDN。
allow_credentialbooleanfalse是否允许跨域访问的请求方携带凭据(如 Cookie 等)。根据 CORS 规范,如果设置该选项为 true,那么将不能在其他属性中使用 *
allow_origins_by_regexarraynil使用正则表达式数组来匹配允许跨域访问的 Origin,如 [".*\.test.com$"] 可以匹配任何 test.com 的子域名。如果 allow_origins_by_regex 属性已经指定,则会忽略 allow_origins 属性。
allow_origins_by_metadataarraynil通过引用插件元数据的 allow_origins 配置允许跨域访问的 Origin。比如当插件元数据为 "allow_origins": {"EXAMPLE": "https://example.com"} 时,配置 ["EXAMPLE"] 将允许 Origin https://example.com 的访问。
IMPORTANT
  1. allow_credential 是一个很敏感的选项,请谨慎开启。开启之后,其他参数默认的 * 将失效,你必须显式指定它们的值。
  2. 在使用 ** 时,需要清楚该参数引入的一些安全隐患,比如 CSRF,并确保这样的安全等级符合自己预期。

元数据#

名称类型必选项描述
allow_originsobject定义允许跨域访问的 Origin;它的键为 allow_origins_by_metadata 使用的引用键,值则为允许跨域访问的 Origin,其语义与属性中的 allow_origins 相同。

最简单的就是全配置*号,但是会有安全风险。所以建议将授权范围的域名配置上,缩小跨域范围。注意,有的研发人员喜欢用cookie和localStorage等信息,就需要配置allow_credential:true来启用凭据。(这个原则上不推荐使用,尽量回避)所以示例的配置上,都是使用的"**"进行的配置。

然后就是,allow_header里面,如果不配置*号,那么需要将所有非标准header都添加进去,否则校验不过,依然会提示跨域。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1626673.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web-SpringBootWen

创建项目 后面因为报错,所以我把jdk修改成22,仅供参考。 定义类,创建方法 package com.start.springbootstart.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotati…

单细胞+RIP-seq项目文章| Cell ReportshnRNPU蛋白在小鼠精原干细胞池建立的关键作用

精原干细胞(SSCs)是负责精子发生的干细胞,具有自我更新和分化产生功能性精子的能力。SSCs的持续再生对于维持雄性生育力至关重要。然而,SSC池的发育起源尚不清楚。在哺乳动物中,SSCs源自名为 prospermatogonia&#xf…

基于JAVA实现的贪吃蛇小游戏

JAVA贪吃蛇小游戏实现: 贪吃蛇曾经在我们的童年给我们带来了很多乐趣。贪吃蛇这款游戏现在基本上没人玩了,甚至在新一代人的印象中都已毫无记忆了。。。但是,这款游戏可以在一定程度上锻炼自己的编程能力。 目前这个版本只是一个测试版本,所以…

AI:162-如何使用Python进行图像识别与处理深度学习与卷积神经网络的应用

本文收录于专栏:精通AI实战千例专栏合集 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 每一个案例都附带关键代码,详细讲解供大家学习,希望可以帮到大家。正在不断更新中~ 一.如何使用Python进行图像识别与处理…

在Windows 10中如何关闭BitLocker加密?这里提供详细步骤

序言 BitLocker加密将有助于保持卷或闪存驱动器处于安全模式。但是,如果你不再需要BitLocker加密,你可以在Windows 10计算机上轻松删除BitLocker加密。在这里,我们将向你展示在Windows 10上删除/禁用BitLocker驱动器加密的四种方法。 通过控…

Qt/C++音视频开发71-指定mjpeg/h264格式采集本地摄像头/存储文件到mp4/设备推流/采集推流

一、前言 用ffmpeg采集本地摄像头,如果不指定格式的话,默认小分辨率比如640x480使用rawvideo格式,大分辨率比如1280x720使用mjpeg格式,当然前提是这个摄像头设备要支持这些格式。目前市面上有一些厂家做的本地设备支持264格式&am…

1688获得店铺所有商品API接口技术解析与应用实践

在电商领域,快速获取店铺所有商品信息对于商家和开发者来说至关重要。1688作为国内领先的B2B电商平台,提供了丰富的API接口供开发者使用,其中获得店铺所有商品API接口是其中之一。本文将深入解析该API接口的技术实现,并探讨其在实…

嵌入式中全栈工程师是怎么样的?

这两天有小伙伴问我,如何才能做到嵌入式全栈?我用visio软件画了一张图,为大家讲解。 此图为博主认为的嵌入式全栈,从硬件到软件全套技术栈,我们“从下往上”讲解。 1、首先是需要有原理图库,可以自己画,也可以从别人那里拷贝。有了原理图库,就开始画原理图。画原理图需…

​「Python大数据」词频数据渲染词云图导出HTML

前言 本文主要介绍通过python实现数据聚类、脚本开发、办公自动化。词频数据渲染词云图导出HTML。 一、业务逻辑 读取voc数据采集的数据批处理,使用jieba进行分词,去除停用词词频数据渲染词云图将可视化结果保存到HTML文件中二、具体产出 三、执行脚本 python wordCloud.p…

基于模糊控制的电动汽车锂电池SOC主动均衡电路MATLAB仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) 模型简介 模型在 Matlab/Simulink仿真平台中搭建16节电芯锂电池电路模型,主要针对电动车锂电池组SOC差异性,采用模糊控制算法动态调节均衡电流,以减少均衡时间和能量损耗。…

OpenStack 云平台管理

目录 一、案例分析 1.1、案例概述 1.2、案例前置知识点 1)关于浮动 IP 地址 2)关于快照 1.3、案例环境 1)本案例实验环境 2)案例需求 3)案例实现思路 二、案例实施 2.1、部署 OpenStack 2.2、创建…

WSL2无法ping通本地主机ip的解决办法

刚装完WSL2的Ubuntu子系统时,可能无法ping通本地主机的ip: WSL2系统ip: 本地主机ip: 在powershell里输入如下的命令: New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias &quo…

反映工业发展质量与效益的主要指标有哪些

我国经济已由高速增长阶段转向高质量发展阶段,这是新时代我国经济发展的基本特征。推动高质量发展,是保持经济持续健康发展的必然要求,是适应我国社会主要矛盾变化和全面建成小康社会、全面建设社会主义现代化国家的必然要求,是遵…

解决Gson转Map时数值int、long等转为Double

今天尝试使用Gson,发现转Map时数值都转成了Double,百度无果后,通过查看源码,尝试可以通过自定义对象转数值策略来解决,特地记录一下; Gson默认采取将数值转换到Double的策略ToNumberPolicy.DOUBLE&#xf…

mysql的多表查询和子查询

多表查询:查询数据时,需要使用多张表来查询 多表查询分类: 1.内连接查询 2.外连接查询 3.子查询 笛卡尔积: create table class (id int primary key auto_increment,name varchar(10) ); create table student (id int primar…

2024软件测试面试题总结

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 测试技术面试题 1、什么是兼容性测试?兼容性测试侧…

2024年Java JDK下载安装教程,附详细图文

文章目录 简介一、JDK的下载二、JDK的安装三、设置环境变量(不一定需要执行) 简介 博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f34…

打印机连接电脑后打印无反应解决小方法

测试页打印失败是否参阅打印疑难解答已或得帮助 一台刚购买的新惠普打印机,拆箱后正常安装,接通电源、USB线连接电脑,正常安装驱动光盘;然后打印测试页来测试打印机,这个时候你点打印测试页,在打印任务里会…

国家级会议报道:贝锐蒲公英异地组网高效实现前方数据回传

作为市委宣传部的国有新闻媒体,在日常工作中会派遣大量人员外出进行采访、报道,还经常面临国家级重要会议或活动的报道任务。 在这些工作中,前方人员往往需要和后方人员协同、保证内容的时效性,及时反馈现场的相关资料和信息、访…

docker入门级命令

基本概念 docker的连个基本概念:镜像、容器。 docker镜像可以理解为是存储docker安装包的地方,比如:mcr.microsoft.com/mssql/server:2017-latest是sqlserver的docker镜像。 可以通过docker pull命令拉取远程镜像到本地。比如:…