Дата публикации:Sat, 31 Jan 2026 18:55:27 +0300
Компания Cloudflare опубликовала выпуск фреймворка Pingora 0.7, предназначенного для разработки защищённых высокопроизводительных сетевых сервисов на языке Rust. Построенный при помощи Pingora прокси уже более двух лет используется в сети доставки контента Cloudflare вместо nginx и обрабатывает более 40 млн запросов в секунду. Код написан на языке Rust и опубликован под лицензией Apache 2.0.
Основные возможности Pingora:
- Поддержка HTTP/1 и HTTP/2 (в планах HTTP/3), а также возможность создания сервисов, использующих свои протоколы или UDP/TCP. Поддержка многопоточной обработки запросов в асинхронном режиме. Возможность прикрепления callback-обработчиков и фильтров, позволяющих управлять различными стадиями обработки запроса, а также изменять, перенаправлять, блокировать и журналировать запросы и ответы. Проксирование gRPC и WebSocket. Подключаемые балансировщики нагрузки. Возможность изменения конфигурации без перезапуска. Поддержка обновления кода приложения без разрыва соединений. Средства для переключения нагрузки в случае сбоя (failover). Интеграция с различными системами мониторинга и ведения логов (Syslog, Prometheus, Sentry, OpenTelemetry). Поддержка TLS-шифрования (применяется OpenSSL, BoringSSL или Rustls). Готовые Rust-пакеты для создания HTTP-прокси, работы с сетевыми протоколами, разбора заголовков HTTP, учёта и ограничения трафика, балансировки нагрузки, работы с распределённой хэш-таблицей Ketama, поддержания кэша в оперативной памяти и асинхронной обработки таймаутов.
- В структуру SslDigest добавлено поле "extension", а для типажа TlsAccept реализован обработчик handshake_complete_callback, позволяющие прикреплять к TLS-соединению произвольные данные, специфичные для приложения. В качестве примера показано как использовать данную возможность для создания сервера, читающего информацию из сертификата клиента и возвращающего её в HTTP-ответе. Добавлен типаж ConnectionFilter для фильтрации TCP-соединений на стадии до согласования параметров TLS, что позволяет экономить ресурсы, сбрасывая соединения на ранней стадии. Добавлена поддержка виртуальных потоков транспортного уровня (Virtual L4 Streams), позволяющих интегрировать в pingora-proxy собственные реализации сетевых протоколов. Реализована возможность использования опций verify_cert и verify_hostname в конфигурациях с rustls. Для внешних crate-пакетов разрешён доступ к структуре HttpProxy для переопределения логики проксирования запросов. Разрешено выделение фоновых обработчиков подзапросов из основного обработчика сеанса. Предоставлена возможность отслеживания размера тела запросов HTTP1 и HTTP2, а также метрик работы прокси. Добавлена возможность создания собственных сеансов для инкапсулированного HTTP-трафика. Выставлено ограничения на использование версий библиотеки lru (0.16.3 или новее) из-за уязвимости в реализации итератора IterMut, приводящей к аварийному завершению из-за срабатывания проверки заимствования переменных (borrow checker).
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=64710