Можно ли принудительно закрыть соединение Apache 2.2 из модуля C? - PullRequest
4 голосов
/ 12 апреля 2010

Нам бы хотелось иметь более детальный контроль над соединениями, которые мы обслуживаем в модуле C ++ Apache 2.2 (в CentOS 5).

Одно из соединений должно оставаться активным для нескольких множественных запросов, поэтому мы устанавливаем «KeepAlive» в «Вкл» и устанавливаем короткий период поддержки.

Но для каждого такого соединения у нас есть еще несколько соединений из браузера, которые нам не нужно оставлять, и вместо этого мы хотим принудительно закрыть их после одного запроса.

Некоторые из этих подключений находятся на разных портах (поэтому мы можем различать их по портам, поскольку KeepAlive можно установить для каждого виртуального хоста), а некоторые запрашивают другой URL-адрес (поэтому мы можем сказать по пути и параметрам, что мы не делаем хочу оставить их позади).

Также для того, который мы делаем хотим сохранить в живых, мы знаем, что после определенного запроса мы бы тоже хотели закрыть его.

Но пока единственный способ «отменить» keep-alive, который мы нашли, - это отправить вежливый заголовок «Connection: close» клиенту. Если клиент плохо себя ведет или злонамерен, он может держать его открытым и тратить наши ресурсы.

Есть ли способ заставить Apache закрыть соединение со стороны сервера? В документации не рекомендуется использовать простой вызов close (2) для сокета, поскольку Apache необходимо выполнить некоторую очистку, прежде чем это будет сделано. Но есть ли какой-то API или хитрость, чтобы динамически «переопределить» статическую конфигурацию «KeepAlive On» (и убедить Apache вызвать close (2))?

Спасибо.

1 Ответ

1 голос
/ 01 июля 2012

Попробуйте установить c-> aborted, тогда apache закроет сокет в нужное время во время его правильного выключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...