limit-conn插件
更新时间 2026-04-21 15:48:56
最近更新时间: 2026-04-21 15:48:56
本文将详细介绍limit-conn插件功能、配置和使用。
功能说明
limit-conn 插件用于限制客户端对单个服务的并发请求数。当客户端对路由的并发请求数达到限制时,可以返回自定义的状态码和响应信息
配置字段
| 名称 | 类型 | 填写要求 | 默认值 | 有效值 | 描述 |
|---|---|---|---|---|---|
| conn | integer | 必填 | conn > 0 | 允许的最大并发请求数。超过 conn 的限制、但是低于 conn + burst 的请求,将被延迟处理。 | |
| burst | integer | 必填 | burst >= 0 | 每秒允许被延迟处理的额外并发请求数。 | |
| default_conn_delay | number | 必填 | default_conn_delay > 0 | 默认的典型连接(或请求)的处理延迟时间。 | |
| only_use_default_delay | boolean | 可选 | false | 延迟时间的严格模式。当设置为 true 时,将会严格按照设置的 default_conn_delay 时间来进行延迟处理。 | |
| key_type | string | 可选 | "var" | ["var", "var_combination"] | key 的类型。 |
| key | string | 可选 | 用来做请求计数的依据。如果 key_type 为 "var",那么 key 会被当作变量名称,如 remote_addr 和 consumer_name;如果 key_type 为 "var_combination",那么 key 会当作变量组合,如 $remote_addr $consumer_name;如果 key 的值为空,$remote_addr 会被作为默认 key。 | ||
| rejected_code | integer | 可选 | 503 | [200,...,599] | 当请求数超过 conn + burst 阈值时,返回的 HTTP 状态码。 |
| rejected_msg | string | 可选 | 非空 | 当请求数超过 conn + burst 阈值时,返回的信息。 | |
| allow_degradation | boolean | 可选 | false | 当设置为 true 时,启用插件降级并自动允许请求继续。 |
配置示例
limit-conn 使用示例
conn: 1
burst: 0
default_conn_delay: 0.1
rejected_code: 503
key_type: "var"
key: "remote_addr"根据该配置场景,请求以下路由。
curl -i http://example.com/index.html?sleep=20 &
curl -i http://example.com/index.html?sleep=20在这条路由资源上,网关将只允许一个连接;当有更多连接进入时,网关会直接返回 503 HTTP 状态码,拒绝连接。
<html>
<head><title>503 Service Temporarily Unavailable</title></head>
<body>
<center><h1>503 Service Temporarily Unavailable</h1></center>
<hr><center>openresty</center>
</body>
</html>配置模板
# [必填]最大并发连接请求数
conn: 1
# [必填]允许被延迟处理的并发请求数
burst: 0
# [必填]默认的典型连接(或请求)的处理延迟时间
default_conn_delay: 0.1
# [可选]延迟时间的严格模式。 如果设置为true的话,将会严格按照设置的时间来进行延迟
#only_use_default_delay: false
# [可选]key 的类型
#key_type: "var"
# [必填]用来做请求计数的依据
key: "remote_addr"
# [可选]请求超过 conn + burst 阈值时,返回的 HTTP 状态码
#rejected_code: 429
# [可选]当设置rejected_msg时,非空。默认可不填
#rejected_msg: "Requests are too frequent, please try again later."
# [可选]当插件功能临时不可用时是否允许请求继续。当值设置为 true 时则自动允许请求继续,默认值是 false
#allow_degradation: false