Убей HTTP (S) соединение в Apache - PullRequest
1 голос
/ 06 января 2011

Пусть, скажем, Apache настроен для поддержки длительных соединений (KeepAlive). И это настроено с достаточно большим временем ожидания.

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

Можете ли вы дать мне указатель, как это сделать?

Буду признателен еще больше, если эта информация будет полезна для а) SSL б) Обратный SSL-прокси

Как правило, окончательным решением будет Apache с SSL-аутентификацией и сертификатом клиента. Apache будет работать как обратный прокси. И мне нужно будет прервать некоторые соединения, основываясь на теме сертификата клиента.

Ответы [ 3 ]

0 голосов
/ 06 января 2011

Я не уверен, что длинные настройки keepalive действительно помогут вам оптимизировать сеансы SSL. При первом подключении происходит сессия SSL, и мы можем предположить, что первый запрос будет на 20% длиннее. Но затем на стороне сервера активируется кэш SSL, и дальнейшие запросы SSL от того же браузера не будут затронуты отменой SSL.

Я бы порекомендовал 5-секундный тайм-аут Keepalive, как правило, этого достаточно для обработки загрузки страницы и изображений css / js /, прикрепленных на этой странице. Может быть, вы можете попробовать 15 с. Но что-то большее не имеет смысла для меня, если вы не используете обработку постоянных соединений COMET. Я могу ошибаться. Сделайте несколько тестов.

Обратите внимание, что у вас могут возникнуть проблемы с повторным обсуждением SSL, если вы выполняете какие-то действия по балансировке нагрузки за apache и если кеш сеанса ssl не используется разными серверами apache. По этой причине балансировщик нагрузки иногда пытается сохранить связь в режиме SSL (всегда ориентируйте этого парня на этот сервер). Но я никогда не читал, что HTTP Keepalive следует использовать для оптимизации SSL.

0 голосов
/ 16 января 2013

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

0 голосов
/ 06 января 2011

Поддерживайте работу двух отдельных экземпляров Apache: 1 для SSL, 1 - нет. Если вы используете модель prefork, вы можете итеративно kill отключить старые идентификаторы PID, у которых есть родительский путь к нужному экземпляру на основе времени жизни процесса.

Не уверен, что вы можете проанализировать или получить PID процесса httpd для каждого субъекта, хотя ...

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