配置

1. 全局配置(Configs)

编号配置项名称用途描述可选值是否必须
1EnableDebug是否输出调试日志信息true,false
2StripAnyHostPort是否忽略 HTTP 请求头中 Host 的端口号,
比如:将 Host: www.aaa.com:8080
视为 Host: www.aaa.com
true,false
3DefaultPassthroughUpstreamPortTLS Passthrough 场景,
如果没有配置上游端口,则使用此端口号
1~65535,通常设置为 443
4SocketTimeout配置socket网络超时时间(单位:秒)大于0,默认是60
5PidFile将pipy进程id写入到文件例子:/var/log/pipy.pid
6ResourceUsage配置采集pipy cpu、mem使用率参考 1.1
7HealthCheckLog配置健康检查日志用的存储服务器信息参考 1.2
8Gzip配置静态文本文件压缩相关参数参考 1.3
9ProxyRedirect对上游返回的HTTP应答中的Location、Refresh等URL进行重写比如:“ProxyRedirect”: {“http://www.flomesh.com/aa": “http://$http_host/ab”, “http://www.flomesh.com/a0": “/a1”}
10ErrorPage对HTTP错误码返回自定义网页或链接,类型为列表 []参考 1.4
11HTTP1PerRequestLoadBalancingHTTP1.1请求时,是否启用基于请求的负载均衡策略,默认为falsetrue、false
12HTTP2PerRequestLoadBalancingHTTP2请求时,是否启用基于请求的负载均衡策略,默认为truetrue、false
13Fault注入错误,用于测试场景参考 3.1.1.3

1.1 ResourceUsage

编号配置项名称用途描述可选值是否必须
1ScrapeInterval采集cpu、mem使用率的时间间隔(单位:秒)大于0,建议60
2StorageAddress存储cpu、mem使用率的REST url如果没有配置就不存储
3Authorization访问REST url用的 Basic认证信息如果没有启用认证就不需要配置

1.2 HealthCheckLog

编号配置项名称用途描述可选值是否必须
1StorageAddress存储健康检查日志的REST url如果没有配置就不存储健康检查日志
2Authorization访问REST url用的 Basic认证信息如果没有启用认证就不需要配置

1.3 Gzip

编号配置项名称用途描述可选值是否必须
1DisableGzip禁用静态文本文件压缩功能,默认为falsetrue、false
2GzipMinLength文本文件压缩的最小字节数,小于此值时不压缩,默认为1024大于等于0
3GzipHttpVersion文本文件压缩最低HTTP版本1.0,1.1 等
4GzipTypes只对这些content-type启用压缩[“text/css”, “text/html”] 等
5GzipDisable针对user-agent来设置禁用压缩比如:“MSIE [1-6].”

1.4 ErrorPage

编号配置项名称用途描述可选值是否必须
1Error错误码列表比如:[404]
2Page自定义网页名称或者URL地址比如:404.html 或 http://www.flomesh.cn/404.html
3Directory自定义网页所在目录,如果Page是URL则忽略此参数比如:/var/www/html/error

2. 监听端口配置(Listeners)

编号配置项名称用途描述可选值是否必须
1Port应用使用的端口号1~65535
2Listen非必须配置,监听端口号,
如果未配置,使用 Port 为监听端口号
1~65535
3Protocol端口所使用的协议HTTP、HTTPS、TLS、TCP、UDP
4AccessControlLists访问控制列表,设置访问者 IP 地址黑白名单。
如果设置了白名单,就以白名单为准;
如果未设置白名单,就以黑名单为准。
参考 2.1
5BpsLimit网络限速(单位:字节/秒)“BpsLimit”: 10000000
6TLS配置 TLS 相关的证书信息参考 2.2

2.1 AccessControlLists

编号配置项名称用途描述参考值是否必须
1Blacklist黑名单列表[“1.1.1.1”, “2.2.2.0/24”]
2Whitelist白名单列表[“1.1.1.1”, “2.2.2.0/24”]
3EnableXFF是否检查请求头 x-forwarded-for 中的 IP 地址,默认不检查true
4Status拒绝访问后返回的响应状态码,不指定时默认为 403403
5Message拒绝访问后返回的响应内容,不指定时默认为空字符Forbidden

2.2 TLS

编号配置项名称用途描述参考值是否必须
1TLSModeTypeTLS 工作模式Terminate、Passthrough
2mTLS是否启用客户端证书认证true、false
3Certificates证书、私钥、CA 证书参考 2.2.1

2.2.1 Certificates

编号配置项名称用途描述参考值是否必须
1CertChain证书“—–BEGIN CERTIFICATE—–\n”
2PrivateKey私钥“—–BEGIN RSA PRIVATE KEY—–\n”
3IssuingCA签名证书“—–BEGIN CERTIFICATE—–\n”

3. 路由规则(RouteRules)

编号配置项名称用途描述参考值是否必须
1端口号Listeners 中端口号所使用的路由规则“80” 或 “80, 443”

3.1 端口号配置(Protocol 为 HTTP、HTTPS 的配置格式)

编号配置项名称用途描述参考值是否必须
1域名HTTP 虚拟主机所使用的域名“*” 或 “www.test.com, api.test.com”

3.1.1 域名

编号配置项名称用途描述参考值是否必须
1RouteType路由类型HTTP、GRPC
2Matches匹配规则参考 3.1.1.1
3RateLimit域名限流配置参考 3.1.1.2
4AccessControlLists访问控制列表,设置访问者 IP 地址黑白名单。如果设置了白名单,就以白名单为准;如果未设置白名单,就以黑名单为准。参考 2.1
5Gzip配置静态文本文件压缩相关参数参考 1.3
6ProxyRedirect参考 1. 全局配置(Configs)说明
7ErrorPage参考 1. 全局配置(Configs)说明
8AccessLogHTTP应用访问日志的文件路径比如:“AccessLog”: “/var/log/fgw-access.log”
9ProxyPreserveHost是否保持HTTP请求中的Host不变,默认为 falsetrue、false
10Fault注入错误,用于测试场景参考 3.1.1.3
3.1.1.1 Matches
编号配置项名称用途描述参考值是否必须
1PathHTTP uri path 匹配参考 3.1.1.1.1
2HeadersHTTP header 匹配参考 3.1.1.1.2
3Methods允许的 HTTP Method[‘GET’, ‘POST’, ‘DELETE’, ‘PUT’]
4QueryParamsHTTP 请求参数匹配参考 3.1.1.1.3
5BackendService动态代理用的后端服务参考 3.1.1.1.4BackendService 或 ServerRoot 必须有一个存在
6ServerRoot静态页面所对应的目录“/var/www/html”BackendService 或 ServerRoot 必须有一个存在
7MethodRouteType 为 GRPC 时,匹配服务参考 3.1.1.1.5
8RateLimit路由限流配置参考 3.1.1.2
9AccessControlLists访问控制列表,设置访问者 IP 地址黑白名单。如果设置了白名单,就以白名单为准;如果未设置白名单,就以黑名单为准。参考 2.1
10Filters过滤器配置参考 3.1.1.1.6
11Gzip配置静态文本文件压缩相关参数参考 1.3
12ProxyRedirect参考 1. 全局配置(Configs)说明
13ErrorPage参考 1. 全局配置(Configs)说明
14Fault注入错误,用于测试场景参考 3.1.1.3
3.1.1.1.1 Path
编号配置项名称用途描述参考值是否必须
1TypePath 匹配类型Prefix、Exact、Regex
2PathPath 值“/”, “/prefix” 等
3.1.1.1.2 Headers
编号配置项名称用途描述参考值是否必须
1Exact精确匹配 Header“Headers”: {
“Exact”: {
“abc”: “1”
},
“Regex”: {
“xxx”: “^[0-9]+"
}
}
2Regex正则匹配 Header同上
3.1.1.1.3 QueryParams
编号配置项名称用途描述参考值是否必须
1Exact精确匹配 Params“QueryParams”: {
“Exact”: {
“abc”: “1”
},
“Regex”: {
“xxx”: “^[0-9]+"
}
}
2Regex正则匹配 Params同上
3.1.1.1.4 BackendService
编号配置项名称用途描述参考值是否必须
1后端服务名后端服务的名称,比如:“backendService1”参考:3.1.1.1.4.1
3.1.1.1.4.1 BackendService后端服务名
编号配置项名称用途描述参考值是否必须
1Weight权重整数
2Filters过滤器配置参考 3.1.1.1.6
3.1.1.1.5 Method
编号配置项名称用途描述参考值是否必须
1Type匹配类型Exact
2ServiceGRPC 服务名“com.example.GreetingService”
3MethodGRPC 方法名“Hello”
3.1.1.2 RateLimit
编号配置项名称用途描述参考值是否必须
1Backlog积压值:达到限流时,允许的排队数量
2Requests请求值,限流窗口内分配的访问次数
3Burst爆发值,限流窗口内最大允许访问次数
4StatTimeWindow限流时间窗口(单位:秒)
5ResponseStatusCode发生限流时,返回的 HTTP 状态码100~599
6ResponseHeadersToAdd发生限流时,添加的 HTTP header 信息
3.1.1.3 Fault
编号配置项名称用途描述参考值是否必须
1Delay注入响应延时参考 3.1.1.3.1
2Abort注入响应错误码参考 3.1.1.3.2
3.1.1.3.1 Delay
编号配置项名称用途描述参考值是否必须
1Percent对请求注入失败的百分比0~100
2Fixed延时时间大于0
3Range延时时间的随机范围比如:“0-100”
4Unit延时的时间单位,默认为 “ms”“ms”、“s”、“m”
3.1.1.3.1 Abort
编号配置项名称用途描述参考值是否必须
1Percent对请求注入失败的百分比0~100
2StatusHTTP、GRPC 的应答状态码,比如:503数字
3Message应答提示信息字符串

3.2 端口号配置(Protocol 为 TCP、UDP 的配置格式)

编号配置项名称用途描述参考值是否必须
1服务名: 权重对应上游服务的名称、权重{
“service1”: 50,
“service2”: 50
}

3.3 端口号配置(Protocol: “TLS”, TLSModeType: “Passthrough 的配置格式)

编号配置项名称用途描述参考值是否必须
1服务域名: 上游域名对应上游服务域名{
www.test.com”: “www.abc.com:443”,
www.xyz.com”: “www.xyz.com:8443”
}

3.4 端口号配置(Protocol: “TLS”, TLSModeType: “Terminate 的配置格式)

编号配置项名称用途描述参考值是否必须
1域名服务域名和对应的上游服务列表“abc.com”:
{
“service1”: 100
}
3.1.1.1.6 Filters
编号配置项名称用途描述参考值是否必须
1RequestHeaderModifier修改 HTTP 请求头参考 3.1.1.1.6.1
2ResponseHeaderModifier修改 HTTP 应答头参考 3.1.1.1.6.2
3RequestRedirect请求重定向参考 3.1.1.1.6.3
4URLRewrite请求的 URL 重写参考 3.1.1.1.6.4
5RequestMirror将请求镜像到其他服务参考 3.1.1.1.6.5
3.1.1.1.6.1 RequestHeaderModifier
编号配置项名称用途描述参考值是否必须
1Set设置 HTTP header[
{
“name”: “my-header1”,
“value”: “foo”
}
]
2Add增加 HTTP header[
{
“name”: “my-header2”,
“value”: “bar”
}
]
3Remove删除 HTTP header[
“my-header3”,
“my-header4”
]
3.1.1.1.6.2 ResponseHeaderModifier
编号配置项名称用途描述参考值是否必须
1Set设置 HTTP header[
{
“name”: “my-header1”,
“value”: “foo”
}
]
2Add增加 HTTP header[
{
“name”: “my-header2”,
“value”: “bar”
}
]
3Remove删除 HTTP header[
“my-header3”,
“my-header4”
]
3.1.1.1.6.3 RequestRedirect
编号配置项名称用途描述参考值是否必须
1Scheme协议描述http、https
2Hostname重定向到的域名
3Path重定向到的路径
4Port重定向到的端口
5StatusCode重定向返回的状态码301、302
3.1.1.1.6.4 URLRewrite
编号配置项名称用途描述参考值是否必须
1Hostname主机名/域名重写sub.example.com
2Path路径重写规则参考 3.1.1.1.6.4.1
3.1.1.1.6.4.1 URLRewrite Path 规则
编号配置项名称用途描述参考值是否必须
1TypeUrl 重写匹配规则ReplacePrefixMatch:前缀匹配
ReplaceFullPath:全路径匹配
2ReplacePrefixMatch前缀匹配时替换 pathtype 为 ReplacePrefixMatch 时,必须配置
3ReplaceFullPath全路径匹配时替换 pathtype 位 ReplaceFullPath 时,必须配置
3.1.1.1.6.5 RequestMirror
编号配置项名称用途描述参考值是否必须
1BackendService接收请求的服务名比如:“backendService2”

4. 服务配置(Services)

编号配置项名称用途描述参考值是否必须
1服务对应 RouteRules 中,BackendService 配置使用的服务名参考 4.1

4.1 服务 配置格式

编号配置项名称用途描述参考值是否必须
1StickyCookieName使用 cookie sticky 负载均衡时,cookie 的名称“_srv_id”
2StickyCookieExpires使用 cookie sticky 时,cookie 的有效期3600
3HealthCheck对上游服务的健康检查配置参考 4.1.1
4Endpoints上游服务信息参考 4.1.2
5CircuitBreaking熔断配置,用于 Protocol 为 HTTP、HTTPS 的场景参考 4.1.4
6RetryPolicy重试配置,用于 Protocol 为 HTTP、HTTPS 的场景参考 4.1.5
7UpstreamCert访问上游使用 默认使用的 TLS 证书参考 4.1.6
8Algorithm负载均衡算法,支持 RoundRobinLoadBalancer(未指定时默认使用)、HashingLoadBalancer、LeastConnectionLoadBalancer“RoundRobinLoadBalancer”

4.1.1 HealthCheck

编号配置项名称用途描述参考值是否必须
1Interval主动检测的时间间隔,
如果不设置,不会进行主动健康检测
单位:秒
10
2MaxFails连续失败次数后,将上游设置为不可用3
3FailTimeout被动检测时,服务不可用时间间隔。
当连续失败次数达到 MaxFails 后,该上游将暂时禁用。
如果设置了主动检查,该参数被忽略。单位:秒
30
4Path使用 HTTP 方式进行健康检查,为 HTTP path
如果未设置 Path,表示用 TCP 方式进行端口健康检查
5MatchesHTTP 健康检查时的判定条件参考 4.1.1.1
4.1.1.1 Matches
编号配置项名称用途描述参考值是否必须
1StatusCodes期望的HTTP状态码数组比如: [ 200 ]
2Body期望返回Body中包含的内容比如:OK
3Headers期望包含的HTTP头比如:{“content-type”: “text/html”}

4.1.2 Endpoints

编号配置项名称用途描述参考值是否必须
1上游目标地址参考 4.1.2.1
4.1.2.1 上游目标地址
编号配置项名称用途描述参考值是否必须
1Weight权重整数
2Tags标记
3UpstreamCert访问上游用的 TLS 证书
4UseSSL不需要客户端SSL证书的场景,是否使用SSL连接访问上游服务true、false
5Host重写HTTP请求头中的Host,默认使用上游target(ip:端口)

4.1.4 CircuitBreaking

编号配置项名称用途描述参考值是否必须
1MinRequestAmount触发熔断必须达到的访问次数
2StatTimeWindow熔断判定统计窗口(单位:秒)
3SlowTimeThreshold慢访问时间阈值(单位:秒)
4SlowAmountThreshold触发熔断的慢访问次数
5SlowRatioThreshold触发熔断的慢访问占比0.00~1.00
6ErrorAmountThreshold触发熔断的失败访问次数
7ErrorRatioThreshold触发熔断的失败访问占比0.00~1.00
8DegradedTimeWindow熔断时间窗口(单位:秒)
9DegradedStatusCode熔断时返回的 HTTP 状态码100~599
10DegradedResponseContent熔断时返回的提示信息

4.1.5 RetryPolicy

编号配置项名称用途描述参考值是否必须
1RetryOn重试条件: 设置为 HTTP 状态码“5xx” 等
2NumRetries重试次数
3RetryBackoffBaseInterval重试间隔(单位:秒)

4.1.6 UpstreamCert

编号配置项名称用途描述参考值是否必须
1CertChain证书“—–BEGIN CERTIFICATE—–……”
2PrivateKey私钥“—–BEGIN RSA PRIVATE KEY—–……”
3IssuingCACA 证书“—–BEGIN CERTIFICATE—–……”

5. 流程链(Chains)配置

可以动态增减功能模块(插件)

编号流程名称模块列表
1HTTPRoute“common/access-control.js”,
“common/ratelimit.js”,
“common/consumer.js”,
“http/codec.js”,
“http/auth.js”,
“http/route.js”,
“http/service.js”,
“http/metrics.js”,
“http/tracing.js”,
“http/logging.js”,
“http/circuit-breaker.js”,
“http/throttle-domain.js”,
“http/throttle-route.js”,
“filter/request-redirect.js”,
“filter/header-modifier.js”,
“filter/url-rewrite.js”,
“http/forward.js”,
“http/default.js”
2HTTPSRoute“common/access-control.js”,
“common/ratelimit.js”,
“common/tls-termination.js”,
“common/consumer.js”,
“http/codec.js”,
“http/auth.js”,
“http/route.js”,
“http/service.js”,
“http/metrics.js”,
“http/tracing.js”,
“http/logging.js”,
“http/circuit-breaker.js”,
“http/throttle-domain.js”,
“http/throttle-route.js”,
“filter/request-redirect.js”,
“filter/header-modifier.js”,
“filter/url-rewrite.js”,
“http/forward.js”,
“http/default.js”
3TLSPassthrough“common/access-control.js”,
“common/ratelimit.js”,
“tls/passthrough.js”,
“common/consumer.js”
4TLSTerminate“common/access-control.js”,
“common/ratelimit.js”,
“common/tls-termination.js”,
“common/consumer.js”,
“tls/forward.js”
5TCPRoute“common/access-control.js”,
“common/ratelimit.js”,
“tcp/forward.js”,
“server/web-server.js”

Feedback

Was this page helpful?