skipper 内置的常用filters

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/

posted on 2018-12-04 18:53  荣锋亮  阅读(391)  评论(0编辑  收藏  举报

导航