У Nginx есть 3 полезные директивы:
reset_timedout_connection on; # 1
client_body_timeout 5; # 2
send_timeout 2; # 3
Что они делают:
# 1 - Если клиент перестал читать отвечать от сервера, Nginx будет сбрасывать соединение с ним, освобождая ресурсы.
# 2 - Ограничение времени ожидания тела запроса от клиента. Если тело запроса не пришло в этот интервал, Nginx сбросит соединение.
# 3 - Если клиент прекратит чтение ответа, Nginx подождет заданный интервал и сбросит соединение.
По умолчанию эти значения весьма высоки. Если я правильно понимаю ваш вопрос, то по сути Nginx это и так делает (сбрасывает соединение с отвалившимся клиентом), но делает это не сразу (в момент закрытия вкладки браузера), а по истечении некоторого времени. Уменьшив эти интервалы можно заставить Nginx сбрасывать соединения сильно раньше. Но и слишким низкие значения не стоит использовать - в этом случае медленные клиенты будут посланы куда подальше. А половина мобильных клиентов в половине мобильных сетей - медленные.