
Существует множество HTTPS-серверов (Nginx или Haproxy или что-то еще?):
- одиночный балансир,
- и несколько работников.
Можно ли перенести установленный сеанс HTTPS (с уже полученными заголовками HTTP-запроса) с балансировщика на рабочий сервер?
- Балансировщик должен полностью забыть об этой сессии.
- Рабочий процесс должен получить остальную часть тела HTTP-запроса и отправить HTTP-ответ.напрямуюклиенту по SSL (без балансировщика).
Это кажетсяотносительнотривиально для простого HTTP, потому что он не зашифрован, но кажетсякусочексложно для HTTPS, поскольку параметры SSL-рукопожатия, специфичные для сеанса, должны быть (прозрачными для клиента):
- Серийно, балансировщиком,
- Переведено на рабочий,
- Десериализовано работником,
- Подано работником.
Ближайшая функция, которую я нашел, называется "SSL connection mirroring" и является частью платформы F5 BIG-IP. Она показывает, что описанная проблема практически решаема. Но это (a) проприетарное, (b) чрезвычайно дорогостоящее и (c) отказоустойчивое решение, т. е. HA без LB.