#[non_exhaustive]pub struct ShieldConfig {
pub enabled: bool,
pub endpoint_classes: Vec<EndpointClassConfig>,
pub identifier_endpoints: Vec<IdentifierEndpointConfig>,
pub window_secs: u64,
pub redis_url: Option<String>,
pub trusted_proxies: Vec<String>,
}Expand description
Shield (rate limiting) configuration.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.enabled: bool§endpoint_classes: Vec<EndpointClassConfig>Endpoint classification (glob pattern → class → rate limit).
identifier_endpoints: Vec<IdentifierEndpointConfig>Per-identifier rate limiting.
window_secs: u64Window size in seconds (default: 60).
redis_url: Option<String>Redis URL for shared counters across replicas (e.g. “redis://127.0.0.1/”).
When unset, an in-process per-replica store is used. Requires the redis
build feature; otherwise the proxy logs a warning and uses the in-process
store.
trusted_proxies: Vec<String>CIDR ranges of trusted reverse proxies / load balancers (e.g.
“10.0.0.0/8”). X-Forwarded-For / X-Real-IP are honored only when the
direct peer falls in one of these ranges; otherwise the peer socket
address is used as the client identity. Empty (the default) means do not
trust forwarding headers — set this behind a load balancer.
Trait Implementations§
Source§impl Clone for ShieldConfig
impl Clone for ShieldConfig
Source§fn clone(&self) -> ShieldConfig
fn clone(&self) -> ShieldConfig
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ShieldConfig
impl Debug for ShieldConfig
Source§impl<'de> Deserialize<'de> for ShieldConfig
impl<'de> Deserialize<'de> for ShieldConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for ShieldConfig
impl RefUnwindSafe for ShieldConfig
impl Send for ShieldConfig
impl Sync for ShieldConfig
impl Unpin for ShieldConfig
impl UnsafeUnpin for ShieldConfig
impl UnwindSafe for ShieldConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request