limit_conn

`limit_conn` 指令限制来自单个 IP 地址的并发连接数。 — NGINX HTTP Core

limit_conn
httpserverlocation
语法limit_conn zone_name number;
默认值none
上下文http, server, location
模块NGINX HTTP Core
参数2

说明

NGINX 中的 `limit_conn` 指令用于限制单个 IP 地址对特定 server 或 location 块发起的并发连接数。 这对于防止由于连接过多而导致的滥用或过载至关重要,这类情况会降低服务器性能。该指令接受两个参数:区域名称和每个 IP 地址允许的最大连接数。该指令与 `limit_conn_zone` 配合使用,后者定义用于跟踪来自 IP 地址的连接计数的共享内存区域。 当收到请求时,NGINX 会在定义的区域中将源 IP 的连接计数递增。如果连接计数超过指定限制,客户端将收到 503 服务不可用 错误。连接计数按 IP 地址管理,通常记录在内存中,从而可以高速检查连接限制,无需持久化存储。这有助于管理拥塞并确保服务器资源在用户之间公平分配。 要实现该指令,管理员必须在适当的上下文(http、server 或 location)中定义限制,并确保配置了相应的 `limit_conn_zone` 指令。根据预期流量在定义区域和设置限制之间取得平衡,是有效实施此指令的关键。

配置示例

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    server {
        location / {
            limit_conn addr 1;
        }
    }
}

确保在使用 `limit_conn` 之前定义 `limit_conn_zone` 指令,以避免配置错误。

对设置的限制要谨慎;过于严格的限制可能会阻止合法用户或流量。

考虑连接限制对应用行为的影响,尤其是对具有高用户交互的服务。