Expand description
§Pingora
Pingora is a framework to build fast, reliable and programmable networked systems at Internet scale.
§Features
- Http 1.x and Http 2
- Modern TLS with OpenSSL or BoringSSL (FIPS compatible)
- Zero downtime upgrade
§Usage
This crate provides low level service and protocol implementation and abstraction.
If looking to build a (reverse) proxy, see pingora-proxy
crate.
§Feature flags
§Tls
Tls is provided by adding one of these features. If no tls-providing feature is added, only unencrypted http. Only one tls-providing feature can be selected at a time
-
openssl
— Use OpenSSL for tlsRequires native openssl libraries and build tooling
-
boringssl
— Use BoringSSL for tlsRequires native boring libraries and build tooling
-
rustls
— Use rustls for tls⚠️ Highly Experimental! ⚠️ Try it, but don’t rely on it (yet)
§Pingora extensions
-
proxy
— Include the proxy moduleThis feature will include and export
pingora_proxy::prelude::*
-
lb
— Include the lb (load-balancing) moduleThis feature will include and export
pingora_load_balancing::prelude::*
-
cache
— Include the cache moduleThis feature will include and export
pingora_cache::prelude::*
-
time
— Enable time/scheduling functionality -
sentry
— Enable sentry for error notifications
Modules§
- apps
- The abstraction and implementation interface for service application logic
- cache
cache
- Caching services and tooling
- connectors
- Connecting to servers
- http
- HTTP header objects that preserve http header cases
- lb
lb
- Load balancing recipes
- listeners
- The listening endpoints (TCP and TLS) and their configurations.
- modules
- Modules to extend the functionalities of pingora services.
- prelude
- A useful set of types for getting started
- protocols
- Abstractions and implementations for protocols including TCP, TLS and HTTP
- proxy
proxy
- Proxying recipes
- server
- Server process and configuration management
- services
- The service interface
- time
time
- Timeouts and other useful time utilities
- upstreams
- The interface to connect to a remote server
- utils
- This module contains various types that make it easier to work with bytes and X509 certificates.
Structs§
- Error
- The struct that represents an error
Enums§
- Error
Source - The source of the error
- Error
Type - Predefined type of errors
- Immut
Str - A data struct that holds either immutable string or reference to static str.
Compared to String or
Box<str>
, it avoids memory allocation on static str. - Retry
Type - Whether the request can be retried after encountering this error
Traits§
- Context
- Helper trait to add more context to a given error
- Error
Trait Error
is a trait representing the basic expectations for error values, i.e., values of typeE
inResult<T, E>
.- OkOrErr
- Helper trait to convert an Option to an Error with context.
- OrErr
- Helper trait to chain errors with context