Nginx 不断达到连接限制,尽管我只使用一个连接

问题描述 投票:0回答:1

我按如下方式配置 nginx(缩短):

http {
    limit_conn_zone $binary_remote_addr zone=conn_zone:10m;

    server {
        limit_conn conn_zone 50;
        limit_conn_log_level error;
        limit_conn_dry_run off;
        ...
    }

    ...
}

现在我的网站通过 1 个 TCP 连接发出约 180 个请求。我已经验证只使用了 1 个连接。我把$connection设置为nginx访问日志格式。在访问日志中,我可以看到 180 个请求中的每一个都是通过同一连接发出的($connection id 始终相同)。我的网络浏览器显示相同,仅使用 1 个连接 (id)。

在我的 nginx error.log 中,我可以看到约 30 个请求达到了连接限制:

2024/07/01 14:57:12 [error] 1338808#1338808: *4560 limiting connections by zone "conn_zone", client: xxx, server: xxx, request: "GET /jsonapi.php/v1/xxx HTTP/2.0", host: "xxx", referrer: "xxx"

现在我不明白当我只使用一个连接时如何达到 50 个连接限制? nginx 到底是如何统计连接数的?

nginx connection limit
1个回答
0
投票

终于找到问题了,来自nginx docs

在 HTTP/2 和 HTTP/3 中,每个并发请求都被视为一个单独的连接。

© www.soinside.com 2019 - 2024. All rights reserved.