limit_conn 是 Nginx 中用于限制并发连接数的模块。它可以根据定义的键值(如客户端 IP 地址)来限制每个键值的并发连接数。

配置指令

  1. limit_conn_zone: 定义共享内存区域,用于存储连接数限制的状态。

    limit_conn_zone $binary_remote_addr zone=addr:10m;
    • $binary_remote_addr: 使用客户端 IP 地址作为键值。

    • zone=addr:10m: 定义名为 addr 的共享内存区域,大小为 10MB。

  2. limit_conn: 在特定的上下文中应用连接数限制。

    limit_conn addr 10;
    • addr: 引用之前定义的共享内存区域。

    • 10: 每个键值(如客户端 IP)最多允许 10 个并发连接。

案例

假设你想限制每个客户端 IP 的并发连接数不超过 10 个:

  1. http 块中定义共享内存区域:

    http {
        limit_conn_zone $binary_remote_addr zone=addr:10m;
    }
  2. serverlocation 块中应用连接数限制:

    server {
        listen 80;
        server_name example.com;
    
        location / {
            limit_conn addr 10;
            proxy_pass http://backend;
        }
    }

注意事项

  • limit_conn 模块仅适用于 TCP 连接,不适用于 HTTP/2 或 WebSocket。

  • 如果连接数超过限制,Nginx 会返回 503 Service Unavailable 错误。

通过合理配置 limit_conn,可以有效防止单个客户端占用过多资源,提升服务器的稳定性。

本篇文章内容来源于:Nginxlimit_conn:并发连接数限制模块详细说明以及案例