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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2014-12-04 OPENQUERY用法以及使用需要注意的地方