Как настроить параметры проверки активности nginx, если вы не можете гарантировать маршрутизацию на один и тот же хост?

У меня есть сценарий, в котором несколько серверов работают с экземпляром nginx. Как бы то ни было, это в основном просто проксированные запросы. Все эти хосты находятся за аппаратным балансировщиком нагрузки, и включение закрепления не обязательно (или желательно по разным причинам).

Несмотря на это, в настоящее время мы по-прежнему соблюдаем keep-alive, чтобы сократить количество подтверждений SSL; но я думаю, что это работает только в том случае, если клиент перенаправляется на тот же хост после первоначального рукопожатия.

В результате мы получаем тысячи неактивных соединений, открытых на каждом из наших хостов; в какой-то момент нашему аппаратному маршрутизатору это надоедает и он начинает отправлять RST-пакеты клиентам. (Если бы это было не так, я подозреваю, что мы достигли предела количества открытых подключений в nginx, так что проблема все еще существует за пределами этого аппаратного маршрутизатора).

Мой вопрос (точнее, мои вопросы):
- Могу ли я сделать так, чтобы nginx обрабатывал каждый запрос как простую транзакцию и не соблюдал keep-alive? Это разумно? Я знаю, что некоторые прошлые службы, над которыми я работал, в основном делали это, но есть ли какие-либо потенциальные недостатки для клиентов, которые ожидают, что их заголовок Keep-Alive будет соблюдаться? Очевидно, это может привести к большему количеству согласований SSL / TLS, но в моем случае это нормально.
- Существуют ли передовые методы корректного завершения незанятых клиентских подключений в nginx?
- Было бы разумно просто позволить этим незанятым соединениям накапливаться на хосте? До какой степени? Десятки тысяч простаивающих подключений?

0
задан 28 March 2020 в 01:29
1 ответ

Возможно, я не понимаю вопроса, но не следует ли установить keepalive_timeout в конфигурации nginx на 0, чтобы сделать то, что вы хотите?

https://nginx .org/en/docs/http/ngx_http_core_module.html#keepalive_timeout

строка для добавления будет просто

keepalive_timeout 0;
0
ответ дан 25 May 2020 в 00:55

Теги

Похожие вопросы