pub struct UpstreamConf {Show 26 fields
pub addrs: Vec<String>,
pub discovery: Option<String>,
pub dns_server: Option<String>,
pub dns_domain: Option<String>,
pub dns_search: Option<String>,
pub update_frequency: Option<Duration>,
pub algo: Option<String>,
pub sni: Option<String>,
pub verify_cert: Option<bool>,
pub health_check: Option<String>,
pub ipv4_only: Option<bool>,
pub enable_tracer: Option<bool>,
pub alpn: Option<String>,
pub connection_timeout: Option<Duration>,
pub total_connection_timeout: Option<Duration>,
pub read_timeout: Option<Duration>,
pub idle_timeout: Option<Duration>,
pub write_timeout: Option<Duration>,
pub tcp_idle: Option<Duration>,
pub tcp_interval: Option<Duration>,
pub tcp_user_timeout: Option<Duration>,
pub tcp_probe_count: Option<usize>,
pub tcp_recv_buf: Option<ByteSize>,
pub tcp_fast_open: Option<bool>,
pub includes: Option<Vec<String>>,
pub remark: Option<String>,
}Expand description
Configuration for an upstream service that handles proxied requests
Fields§
§addrs: Vec<String>List of upstream server addresses in format “host:port” or “host:port weight”
discovery: Option<String>Service discovery mechanism to use (e.g. “dns”, “static”)
dns_server: Option<String>DNS server for DNS discovery
dns_domain: Option<String>DNS domain for DNS discovery
dns_search: Option<String>DNS search for DNS discovery
update_frequency: Option<Duration>How frequently to update the upstream server list
algo: Option<String>Load balancing algorithm (e.g. “round_robin”, “hash:cookie”)
sni: Option<String>Server Name Indication for TLS connections
verify_cert: Option<bool>Whether to verify upstream TLS certificates
health_check: Option<String>Health check URL to verify upstream server status
ipv4_only: Option<bool>Whether to only use IPv4 addresses
enable_tracer: Option<bool>Enable request tracing
alpn: Option<String>Application Layer Protocol Negotiation for TLS
connection_timeout: Option<Duration>Timeout for establishing new connections
total_connection_timeout: Option<Duration>Total timeout for the entire request/response cycle
read_timeout: Option<Duration>Timeout for reading response data
idle_timeout: Option<Duration>Timeout for idle connections in the pool
write_timeout: Option<Duration>Timeout for writing request data
tcp_idle: Option<Duration>TCP keepalive idle time
tcp_interval: Option<Duration>TCP keepalive probe interval
tcp_user_timeout: Option<Duration>TCP keepalive user timeout
tcp_probe_count: Option<usize>Number of TCP keepalive probes before connection is dropped
tcp_recv_buf: Option<ByteSize>TCP receive buffer size
tcp_fast_open: Option<bool>Enable TCP Fast Open
includes: Option<Vec<String>>List of included configuration files
remark: Option<String>Optional description/notes about this upstream
Implementations§
Source§impl UpstreamConf
impl UpstreamConf
Sourcepub fn hash_key(&self) -> String
pub fn hash_key(&self) -> String
Generates a unique hash key for this upstream configuration Used for caching and comparison purposes
Sourcepub fn guess_discovery(&self) -> String
pub fn guess_discovery(&self) -> String
Determines the appropriate service discovery mechanism:
- Returns configured discovery if set
- Returns DNS discovery if any address contains a hostname
- Returns empty string (static discovery) otherwise
Trait Implementations§
Source§impl Clone for UpstreamConf
impl Clone for UpstreamConf
Source§fn clone(&self) -> UpstreamConf
fn clone(&self) -> UpstreamConf
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for UpstreamConf
impl Debug for UpstreamConf
Source§impl Default for UpstreamConf
impl Default for UpstreamConf
Source§fn default() -> UpstreamConf
fn default() -> UpstreamConf
Source§impl<'de> Deserialize<'de> for UpstreamConf
impl<'de> Deserialize<'de> for UpstreamConf
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>,
Source§impl Hash for UpstreamConf
impl Hash for UpstreamConf
Auto Trait Implementations§
impl Freeze for UpstreamConf
impl RefUnwindSafe for UpstreamConf
impl Send for UpstreamConf
impl Sync for UpstreamConf
impl Unpin for UpstreamConf
impl UnwindSafe for UpstreamConf
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
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request