Как упоминалось в http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive
Следует особо отметить, что директива keepalive не ограничивает общее количество подключений к вышестоящим серверам, которые рабочий процесс Nginx может открыть. Параметр соединений должен быть установлен на достаточно маленькое число, чтобы серверы вышестоящего потока также обрабатывали новые входящие соединения.
Я хочу понять, если приходит новый клиент, почему он не может использовать существующие соединения keep-alive?
Нужно ли Nginx создавать новое соединение с апстримом каждый раз, когда приходит новый клиент?
Я думаю что это значит заключается в том, что если поступает больше запросов, чем количество доступных поддерживающих соединений, то, тем не менее, новый будет открыт.
Кроме того, обратите внимание на предложение, предшествующее тому, которое вы цитируете. http://nginx.org/r/keepalive:
Параметр connections устанавливает максимальное количество неактивных соединений keepalive с вышестоящими серверами, которые сохраняются в кэше каждого рабочего процесса. При превышении этого числа самые последние использованные соединения закрываются.
Обратите внимание на часть «каждый рабочий процесс». Я бы предположил, что если соединение (с новым клиентским запросом) входит в рабочий процесс, у которого уже прошло количество поддерживающих активность соединений с данным сервером, то новый все равно будет открыт, даже если какой-то другой рабочий у процессов все еще есть некоторые из их соединений keepalive с тем же вышестоящим сервером, которые все еще неактивны.
Если вам нужно больше деталей, возможно, стоит покопаться в ngx_http_upstream_keepalive_module.c
.