pub struct ReverseProxyService { /* private fields */ }Expand description
The reverse proxy service
Implementations§
Source§impl ReverseProxyService
impl ReverseProxyService
Sourcepub fn new(
registry: Arc<ServiceRegistry>,
load_balancer: Arc<LoadBalancer>,
config: Arc<ProxyConfig>,
) -> Self
pub fn new( registry: Arc<ServiceRegistry>, load_balancer: Arc<LoadBalancer>, config: Arc<ProxyConfig>, ) -> Self
Create a new reverse proxy service
Sourcepub fn with_remote_addr(self, addr: SocketAddr) -> Self
pub fn with_remote_addr(self, addr: SocketAddr) -> Self
Set the remote client address for this request
Sourcepub fn with_trusted_proxies(self, trusted: Arc<TrustedProxyList>) -> Self
pub fn with_trusted_proxies(self, trusted: Arc<TrustedProxyList>) -> Self
Override the trusted-proxy list (default: localhost_only).
Peers in this list are believed when they set CF-Connecting-IP or
X-Forwarded-For headers identifying the real client IP.
Sourcepub fn with_cert_manager(self, cm: Arc<CertManager>) -> Self
pub fn with_cert_manager(self, cm: Arc<CertManager>) -> Self
Set the certificate manager for ACME challenge interception
Sourcepub fn with_network_policy_checker(self, checker: NetworkPolicyChecker) -> Self
pub fn with_network_policy_checker(self, checker: NetworkPolicyChecker) -> Self
Set the network policy checker for access control enforcement
Sourcepub fn error_response(error: &ProxyError) -> Response<BoxBody>
pub fn error_response(error: &ProxyError) -> Response<BoxBody>
Build a client-facing error response with a generic body.
This is the default-deny safety boundary for the ingress proxy. The
proxy binds 0.0.0.0:80/:443, so it MUST NOT leak internal details
(the requested Host/path, a backend address, or the internal
load-balancer group name) to an unauthenticated caller. The full,
detailed ProxyError is logged by the caller (error!(error = %e)
in server.rs); the body returned here carries only a minimal,
status-appropriate phrase so an unmatched / no-target request gets a
clean deny rather than an internal echo.
§Panics
Panics if building a valid HTTP response with a plain-text body fails, which should never occur with well-formed status codes.
Trait Implementations§
Source§impl Clone for ReverseProxyService
impl Clone for ReverseProxyService
Source§fn clone(&self) -> ReverseProxyService
fn clone(&self) -> ReverseProxyService
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Service<Request<Incoming>> for ReverseProxyService
impl Service<Request<Incoming>> for ReverseProxyService
Source§type Error = ProxyError
type Error = ProxyError
Source§type Future = Pin<Box<dyn Future<Output = Result<<ReverseProxyService as Service<Request<Incoming>>>::Response, <ReverseProxyService as Service<Request<Incoming>>>::Error>> + Send>>
type Future = Pin<Box<dyn Future<Output = Result<<ReverseProxyService as Service<Request<Incoming>>>::Response, <ReverseProxyService as Service<Request<Incoming>>>::Error>> + Send>>
Auto Trait Implementations§
impl !RefUnwindSafe for ReverseProxyService
impl !UnwindSafe for ReverseProxyService
impl Freeze for ReverseProxyService
impl Send for ReverseProxyService
impl Sync for ReverseProxyService
impl Unpin for ReverseProxyService
impl UnsafeUnpin for ReverseProxyService
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T, Request> ServiceExt<Request> for T
impl<T, Request> ServiceExt<Request> for T
Source§fn ready(&mut self) -> Ready<'_, Self, Request>where
Self: Sized,
fn ready(&mut self) -> Ready<'_, Self, Request>where
Self: Sized,
Source§fn ready_oneshot(self) -> ReadyOneshot<Self, Request>where
Self: Sized,
fn ready_oneshot(self) -> ReadyOneshot<Self, Request>where
Self: Sized,
Source§fn oneshot(self, req: Request) -> Oneshot<Self, Request>where
Self: Sized,
fn oneshot(self, req: Request) -> Oneshot<Self, Request>where
Self: Sized,
Service, calling it with the provided request once it is ready.Source§fn and_then<F>(self, f: F) -> AndThen<Self, F>
fn and_then<F>(self, f: F) -> AndThen<Self, F>
poll_ready method. Read moreSource§fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F>
fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F>
poll_ready method. Read moreSource§fn map_err<F, Error>(self, f: F) -> MapErr<Self, F>
fn map_err<F, Error>(self, f: F) -> MapErr<Self, F>
poll_ready method. Read moreSource§fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F>
fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F>
Result<Self::Response, Self::Error>)
to a different value, regardless of whether the future succeeds or
fails. Read moreSource§fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F>
fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F>
Source§fn filter_async<F, NewRequest>(self, filter: F) -> AsyncFilter<Self, F>where
Self: Sized,
F: AsyncPredicate<NewRequest>,
fn filter_async<F, NewRequest>(self, filter: F) -> AsyncFilter<Self, F>where
Self: Sized,
F: AsyncPredicate<NewRequest>,
AsyncFilter that conditionally accepts or
rejects requests based on an [async predicate]. Read more