skipper 的filter 功能很强大,可做好多方便的扩展
格式:

all: * -> filter1 -> filter2 -> "http://127.0.0.1:1234/";

setRequestHeader

设置请求的header

foo: * -> setRequestHeader("X-Passed-Skipper", "true") -> "https://backend.example.org";

setResponseHeader

设置response header

foo: * ->setResponseHeader("X-Passed-Skipper", "true") -> "https://backend.example.org";

类似的header 处理的filter

appendRequestHeader,appendResponseHeader,dropRequestHeader,dropResponseHeader

path filter

modPath ,setPath,设置,或者进行path的替换

重定向操作

redirectTo,redirectToLower

redir: PathRegex(/^\/foo\/bar/) -> redirectTo(302, "/foo/newBar") -> <shunt>;

静态文件处理

static

acme: Host(/./) && Method("GET") && Path("/.well-known/acme-challenge/*")
-> static("/.well-known/acme-challenge/", "/srv/www/dehydrated") -> <shunt>;

http 状态处理

status

route1: Host(/^all401\.example\.org$/) -> status(401) -> <shunt>;

内容压缩

对于指定的内容进行压缩处理,同时可以设置压缩级别

* -> compress("...", "image/tiff") -> "https://www.example.org"
* -> compress(9, "image/tiff") -> "https://www.example.org"

查询字符串处理

setQuery,dropQuery,headerToQuery,queryToHeader

setQuery("k", "v")
dropQuery("k")
headerToQuery("X-Foo-Header", "foo-query-param")
queryToHeader("foo-query-param", "X-Foo-Header")

内容处理

randomContent 随机内容,inlineContent 返回一个内容

* -> inlineContent("<h1>Hello</h1>") -> <shunt>
* -> randomContent(42) -> <shunt>;

延迟处理

latency 请求延迟

* -> latency(120) -> "https://www.example.org";

带宽处理

可以进行请求速度的控制

* -> bandwidth(30) -> "https://www.example.org";

流量拷贝

tee

* -> tee("https://audit-logging.example.org") -> "https://foo.example.org";

认证安全

basicAuth,oauth

webhook

webhook("https://custom-webhook.example.org/auth")

cookie 处理

requestCookie,responeCookie

requestCookie("test-session", "abc")
responseCookie("test-session", "abc", 31536000),

跨域处理

corsOrigin

corsOrigin()
corsOrigin("https://www.example.org")
corsOrigin("https://www.example.org", "http://localhost:9001")

限流处理的

consecutiveBreaker,rateBreaker,clientRatelimit,ratelimit,clusterClientRatelimit,clusterRatelimit

clientRatelimit(3, "1m", "auth")
ratelimit(20, "1m")
clusterClientRatelimit(10, "1h")

审计日志处理

auditLog,enableAccessLog

api 使用监控

apiUsageMonitoring,需要启动的时候启用

skipper -enable-api-usage-monitoring -metrics-flavour prometheus

参考资料

https://opensource.zalando.com/skipper/reference/filters/

 
 
 
 

skipper 内置的常用filters的更多相关文章

  1. Django模板系统-内置和自定义Filters

    django模板中最常用的两种特殊符号是 {{ }} 用来表示变量和 {% %} 用来表示逻辑相关的操作 变量 {{ 变量名 }} ,由字母数字下划线组成而.在模板语言中有特殊含义,用来获取对象相应的 ...

  2. linux shell字符串内置的常用操作(获取长度、查找、替换)

    在编写shell程序时,经常会涉及到字符串相关操作.有许多命令语句,如awk,sed都能够做字符串各种操作. 事实上shell内置一系列操作符号,能够达到相似效果,使用内部操作符会省略启动外部程序等时 ...

  3. JavaScript内置对象常用

    Math 提供了数学中常用的属性和方法,使用时直接用Math.属性/方法,而不需要new一个Math对象 Date 使用Date对象来对日期和时间进行操作.使用时,必须用new创建一个实例 windo ...

  4. Math内置对象 常用的方法

    属性: Math.Pi 方法: Math.max()   最大值 Math.min()  最小值 Math.ceil()  向上取整 Math.floor() 向下取整 Math.random()   ...

  5. python 全栈开发,Day51(常用内置对象,函数,伪数组 arguments,关于DOM的事件操作,DOM介绍)

    昨日内容回顾 1.三种引入方式 1.行内js <div onclick = 'add(3,4)'></div> //声明一个函数 function add(a,b){ } 2. ...

  6. 函数和常用模块【day04】:内置函数分类总结(十一)

    重点掌握 字符串格式化format() 字符串格式化百分号 判断 转换 数据类型 帮助信息 map和filter()函数 局部变量全局变量 计算内置函数 常用内置函数(其他) 后续会讲 不常用

  7. js流程控制;常用内置对象

    一.流程控制 1.if .if-else.if-else if-else var ji = 20; if(ji >= 20){ console.log('大吉大利,晚上吃鸡') } alert( ...

  8. 前端JavaScript(2) --常用内置对象,函数,伪数组 arguments,关于DOM的事件操作,DOM介绍

    昨日内容回顾 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...

  9. 生成器的send方法、递推函数、匿名函数及常用内置函数

    生成器的send方法 在使用yield方法创建生成器时,不仅可以使用next方法进行取值,还可以通过send方法向生成器的内部传值 什么是send方法? send方法相当于高级的next方法,send ...

随机推荐

  1. vue组件的使用和事件传递

    子组件与父组件的事件传递具体实现如下: 子组件: <template> <section class="xftz-data-list"> <div c ...

  2. 前端之Bootstrap框架

    一.Bootstrap介绍 Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. 它是为实现快速开发Web应用程序而设计的一套前端工具包. 它支持响应式布局, ...

  3. 第二篇 界面开发 (Android学习笔记)

    第二篇 界面开发 第5章 探索界面UI元素 ●The Android View Class     ●△Widget设计步骤 需要修改三个XML,以及一个class: 1)第一个xml是布局XML文件 ...

  4. ASP.NET使用文件上传控件上传图片

    ASPX代码 <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default. ...

  5. python之pandas简单介绍及使用(一)

    python之pandas简单介绍及使用(一) 一. Pandas简介1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据 ...

  6. nwjs 解决手指可滑动问题

    package.json 中添加: "chromium-args": "--touch-events --enable-touch-drag-drop",

  7. 【Think in java读书笔记】IO系统

    一.FIle类(处理文件目录问题) if else的另外一种写法 ,不加大括号也可以 import java.io.File; import java.io.FilenameFilter; impor ...

  8. python 应用 pyamg

    paper idea要用到pyamg,虽然这个包只有几行代码,但是还是折磨了我挺久,配置环境什么的就废了挺多时间. 好久没用pyamg了,然后又换了电脑,突然感觉有点方,,都忘了之前怎么弄的,今天运行 ...

  9. OTG作为大容量设备

    /********************************************************************************* * OTG作为大容量设备 * 说明 ...

  10. Ubuntu配置Github并且新建仓库push代码,从已有仓库clone代码,并且push

    Github是一款良好的管理代码的工具,使用的时候需要现在Ubuntu上进行配置,下面的内容分为三个部分,第一部分讲述如何在之前从未配置github的电脑配置github,第二部分讲述如何在远程新建一 ...