This commit is contained in:
Mateusz Gruszczyński committed 2026-10-07 08:51:04 +02:00
1 parent a9f9450f80
commit 762eb9e28b
81 files changed
+1242 -1095

No files matched your search

+7 -1
View File
@@ -17,6 +17,10 @@ pub const MAX_CONFIG_BYTES: usize = 262_144;
pub const MAX_BACKENDS: usize = 128;
pub const MAX_ROUTES: usize = 256;
fn legacy_server_header_default() -> crate::settings::ServerHeader {
crate::settings::ServerHeader::legacy_compat_default()
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Config {
@@ -50,7 +54,7 @@ pub struct Config {
pub pages: crate::pages::GlobalPages,
#[serde(default)]
pub compression: crate::compression::Settings,
#[serde(default)]
#[serde(default = "legacy_server_header_default")]
pub server_header: crate::settings::ServerHeader,
#[serde(default)]
pub diagnostic_headers: crate::settings::DiagnosticHeaders,
@@ -198,6 +202,7 @@ pub struct CompiledRoute {
pub country_access: crate::rate_limit::CountryAccess,
pub method_policy: crate::vhost::MethodPolicy,
pub headers: CompiledHeaders,
pub unavailable: bool,
}
#[derive(Debug)]
pub struct CompiledFrontend {
@@ -233,6 +238,7 @@ pub struct CompiledFrontend {
pub acl: Option<CompiledAcl>,
pub headers: CompiledHeaders,
pub security: crate::security::CompiledSecurity,
pub compression: crate::compression::Overrides,
pub cache: crate::cache::Settings,
pub transform: crate::transform::Settings,
pub pages: crate::pages::VhostPages,
+13 -10
View File
@@ -190,6 +190,7 @@ fn compile_routing(
acl: host.acl.as_ref().map(Acl::compile).transpose()?,
headers: host.headers.compile()?,
security: host.security_headers.compile()?,
compression: host.compression.clone(),
cache: host.cache.resolve(&config.cache)?,
transform: host.transform.resolve(&config.transform)?,
pages: host.pages.clone(),
@@ -198,17 +199,17 @@ fn compile_routing(
if host.enabled {
let (fallback_source, fallback_pool, fallback_backend) = match &host.source {
crate::vhost::Source::ReverseProxy => {
let pool = pool.as_ref().ok_or_else(|| {
anyhow::anyhow!(
"vhost {} Reverse Proxy source has no backend pool",
host.id
if let Some(pool) = pool.as_ref() {
(
CompiledSource::ReverseProxy,
Some(pool.clone()),
Some(pool.members[0].backend.clone()),
)
})?;
(
CompiledSource::ReverseProxy,
Some(pool.clone()),
Some(pool.members[0].backend.clone()),
)
} else if host.transient_unavailable {
(CompiledSource::ReverseProxy, None, None)
} else {
anyhow::bail!("vhost {} Reverse Proxy source has no backend pool", host.id);
}
}
crate::vhost::Source::WebServer { web_service_id } => (
CompiledSource::WebServer(web_services[web_service_id].clone()),
@@ -237,6 +238,7 @@ fn compile_routing(
country_access: crate::rate_limit::CountryAccess::default(),
method_policy: crate::vhost::MethodPolicy::default(),
headers: crate::headers::CompiledHeaders::default(),
unavailable: host.transient_unavailable,
};
for name in &host.frontend.hosts {
fallbacks
@@ -371,6 +373,7 @@ fn compile_routing(
country_access: route.country_access.clone(),
method_policy: route.method_policy.clone(),
headers,
unavailable: false,
};
for name in &host.frontend.hosts {
routes