Fluxheim 1.6.29 #103
Closed
eldryoth
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Fluxheim 1.6.29 Release Notes
Fluxheim 1.6.29 continues the Pingora-exit work by moving inherited
compression, header-policy behavior, and safe forwarded-header ownership into
the native HTTP/1 proxy path.
Highlights
compression policy when gzip, brotli, or zstd support is compiled.
when a route does not override compression locally.
route overlay before building native request and response header policies.
cutover when it only uses supported header set/remove/append behavior.
modes:
X-Forwarded-For = off,X-Forwarded-For = replace,X-Real-IP,X-Forwarded-Host,X-Forwarded-Proto, and RFCForwarded.X-Forwarded-For = appendfor routes and programmatic builders, preservinginbound chains only when the direct peer matches configured trusted sources.
path-only
rewrite_templatecapture expansion, including exact route,longest-prefix route, first-regex route, and fallback precedence.
at both vhost and route scope, using trusted
X-Forwarded-Forclientrestoration when configured trusted sources identify the direct peer.
limits, including immediate rejection and bounded queued waits.
limits, including token-bucket rejection and delay-mode admission.
total response timeout, and minimum send-rate policy.
proxy.upstream_total_connection_timeout_secsacross DNS, TCP connect, andoptional TLS handshake setup.
proxy.upstream_tcp_recv_buffer_bytes,proxy.upstream_dscp, and theupstream TCP keepalive triple before connecting. On targets with
TCP_USER_TIMEOUT, it also honorsproxy.upstream_tcp_user_timeout_ms.proxy.downstream_read_timeout_secsselected by the matched proxy beforeforwarding to upstreams.
context fields. Rustls and OpenSSL listener tests prove downstream TLS
request context is populated with negotiated protocol, cipher, and peer
certificate fingerprint where available.
fingerprint and Geo country/ASN rules when typed request context is present,
so cert/Geo policy no longer blocks the native HTTP/1 cutover inventory.
Live route-proxy tests prove direct and alias vhost challenge ownership, safe
token-file loading, GET/HEAD handling, and
405 Allow: GET, HEADbehavior.instead of blocking the async worker thread.
the
traffic-mirrorfeature is compiled, including recursion protection,sampling, forwarded-header selection, mirror response caps, and per-target
in-flight limits.
proxy.auth_requestwhen theauth-requestserver feature is compiled, including trusted context headersynthesis, bounded blocking subrequests, response-header allowlisting, and
deny-before-forwarding behavior.
[vhosts.routes.grpc]validation, rejecting non-POST requests, duplicateContent-Typeheaders, and non-gRPC content types before forwarding.Content-Typegate now matches thenative gate by rejecting duplicate
Content-Typeheaders and acceptingcase-insensitive gRPC media types.
a matching compression backend feature is compiled.
vhost synthetic routes: explicit ACME HTTP-01 upstream challenge routes,
configured routes, then vhost redirect fallback routes.
block the native cutover inventory when their generated route policies are
otherwise native-safe.
route gzip compression, inherited request-header mutation, inherited
response-header mutation, and standard response security headers.
Security Notes
compression: bounded input/output size, negotiated
Accept-Encoding, safemethod/status checks, and privacy-sensitive header exclusions.
ETagandContent-Length, appendsVary: accept-encoding, and lets native response framing compute the finalcompressed length.
request is sent, matching the compatibility-path policy order for the
supported mutation subset.
proxy/header policy now owns
X-Forwarded-Forso privacy-mode and ordinarybuilds share one explicit policy boundary.
forwarded-header baseline as config-driven policy, so omitted overlay fields
still strip spoofable inbound client-IP headers and synthesize owned
forwarding context.
X-Forwarded-Forchainafter any configured spoofable-header stripping, so strip-plus-append degrades
to the direct peer address instead of preserving attacker-supplied hops.
redirect fallback, preserving the HTTP-01 exception ordering used by the
compatibility path for explicit upstream challenge forwarding.
enabled = false, because disabling the request header policy would alsodisable forwarded-client-IP sanitation on that native route.
policy, so requests that miss named routes still strip spoofable
client-IP headers and synthesize owned forwarding context.
request-header mutations, preventing operator
setorappendrules fromreintroducing spoofable forwarded-client-IP fields.
request-header policy used by config-built routes, instead of a no-op policy.
the compatibility path, so untrusted direct peers cannot preserve spoofed
inbound forwarding chains.
reject rewritten paths that would traverse or introduce unsafe forwarding
paths before any upstream connection is opened.
under the native safe-forward-path policy, so regex captures cannot introduce
path hierarchy that was not present in the static rewrite template.
proxying run, so rejected requests cannot be transformed into downstream
effects first.
helper as forwarded-header synthesis, so allow/deny decisions see the
effective client IP only when the direct peer is trusted.
the compatibility path's encoded-route bypass hardening for access decisions.
redirect, or upstream proxy actions run; permits are held until the native
response is produced.
upstream proxy actions run; excess requests are rejected before the native
upstream path is reached, and delay-mode sleeps run before concurrency permit
acquisition so delayed requests cannot exhaust configured concurrency budgets.
X-Forwarded-Forheaders before ACL and rate-limit identity decisions.X-Forwarded-Fortrusted-proxy chains now fail closed on both thenative header crate path and the compatibility proxy path, falling back to
the direct peer address instead of skipping poisoned hops.
cannot trigger repeated full-table scans on every new identity.
one shard of identities at a time.
downstream request-read timeout policy on the native path.
keeping TCP Fast Open as an explicit native transport blocker.
proxy.upstream_tcp_fast_openremains compatibility-runtime only during the1.6 native preview until a safe native socket path has parity tests.
socket options plus TCP keepalive and supported TCP user-timeout are accepted
and still connect through the native proxy path.
and Geo context unset by default.
country/ASN policies reject requests before upstream forwarding when the
typed request context does not satisfy the configured policy.
endpoint without changing the origin response.
configured upstream headers and auth-request deny responses stop before any
upstream connection is made.
proxy.auth_requestand safe-methodtraffic mirroring are native-ready only when their matching server feature
gates are compiled.
marker for loop prevention, so client-supplied
X-Fluxheim-Mirrorheaderscannot suppress the configured mirror feed.
X-Fluxheim-MirrorandX-Fluxheim-Mirror-Signatureheaders before forwarding to the origin.sanitization::ct::ConstantTimeEq; this release also updatessanitizationto 1.2.1 andrustlsto 0.23.41.size cap are now zeroized before release, and allowlisted auth response
headers use zeroizing temporary storage before being copied into the upstream
request.
upstream connection is attempted when
proxy.downstream_read_timeout_secsis selected.
knobs remain explicit native blockers for the dedicated 1.6.30 upstream H2
connection-manager slice.
duplicate
Content-Type, emits gRPC status metadata on local rejections, andforwards valid case-insensitive
application/grpc*requests.Content-Typeheaders are rejected and case-insensitive
application/grpc*media types areaccepted.
408 Request Timeoutbefore closing connections thatexceed the selected request-body timeout.
routes inherit a fallback proxy's longer request-body timeout.
traffic-class support, and the receive-buffer conversion rejects an
impossible oversized value with a dedicated diagnostic instead of silently
ignoring it.
explicit NFA and DFA cache limits.
X-Forwarded-HostandX-Forwarded-Protoheaders along with client-IPforwarding headers.
prefix lengths without relying on implicit shift arithmetic.
X-Real-IP, avoiding divergent native route behavior between config-built andbuilder-created routes.
do not compile the non-privacy forwarded-header synthesis helpers.
X-Content-Type-Options,X-Frame-Options,Referrer-Policy, CSP, and HSTSwhere configured.
stripping while also disabling owned
X-Forwarded-HostorX-Forwarded-Protosynthesis permits client-supplied values for thoseheaders to reach upstreams.
Compatibility
This release does not remove Pingora from normal builds yet. The remaining
compatibility blockers are upstream TCP Fast Open, cache lookup/fill/stale
behavior, PHP-FPM routing, dynamic discovery, health-aware load balancing,
persistence, priority/backup/drain state, hash-based load-balancer selection,
and upstream HTTP/2 connection-manager parity.
Checksums And Signatures
12e744dcc613283b914ddf15016c844c0127fc1ddf2b7127fbf7c4acb94beb217b7be4b9692dee451ed676f369fb8e5279b9d5cb fluxheim-1.6.29.tar.gzf391b24a757b3ce6e5d7ee7f9e045a41143afe0c135ae97635bba86cc363fd96 fluxheim-1.6.29.zipc4b3c15dce49308e99d1fc029220d6b6a5a8fe7f70dd915321ede59870e66705 fluxheim-1.6.29-full-x86_64-linux.tar.gzbde328b3d53a7a2dbb3ea936806614300f5ab01c14ea6f0cfeac9203f942f67a fluxheim-1.6.29-cache-x86_64-linux.tar.gz2f58ccf8a987b1bf6f7f8e52ee7d108b2763ae3fd25e32b344ac4aeec53d0a11 fluxheim-1.6.29-proxy-x86_64-linux.tar.gzd6a8758fd551adf9e11330c155c37cc0cee29721b766bcc2284c954e89a8828e fluxheim-1.6.29-php-x86_64-linux.tar.gz521bc13f0e67660c6141047a35df87e40975ac8a76f831c3059d4207aa550365 fluxheim-1.6.29-load-balancer-x86_64-linux.tar.gz9c9f216c22c24beba07ea07b3766826314ef865d066ffac48043d1c451ae868c fluxheim-1.6.29-config-tester-x86_64-linux.tar.gz8d21f3b870a7f9f3e95b0d8bf411edbfcf888c9603c2ba5d27f81df4c6e4f1fb fluxheim-1.6.29-full-aarch64-linux.tar.gz771f13eb1024ba24e1c544e08e0dfab45f06d1daf76decaf8b7864685b9aa089 fluxheim-1.6.29-cache-aarch64-linux.tar.gza13c0c47bc6c25db7f924734f7ee0d26acf607bec8dcd92b08d7a0675917251d fluxheim-1.6.29-proxy-aarch64-linux.tar.gzbbbce4e20fbc6cefb0f998e4bea3e8c1863a4435dba7544695cf54bf8116349c fluxheim-1.6.29-php-aarch64-linux.tar.gzfac2e61e31af7fbd07298c1ae39b24348392f6a4a0bb3c74f4527a71b32f1549 fluxheim-1.6.29-load-balancer-aarch64-linux.tar.gzea0b8d503dd4e2f18251ebc1df289b3bccd87913e0ce244aecba4b20e6f1f2a6 fluxheim-1.6.29-config-tester-aarch64-linux.tar.gzd01985f36055b963bd74c23186cf1326f3c05ce743d73816ff7a78c1d67e4ec5 fluxheim-1.6.29-dev-aarch64-macos.tar.gz52b76ee2f29f2ce5793b80d7661ced54f3baeaa23f6e2e88a80c1d543726513c fluxheim.spdx.json88cb3053840d5e5fb9ed04ff5ab04dac772b0b0cc97a031f2d70efc82d775cea fluxheim.cyclonedx.json17706cd45a8b56a5e09912b4f3693c2ebfbd6c3b89dad1cd020335ea87cc364fx86_64214a5936aa479bd2ba02cbcf418d7090d300f9e55a9bfdedaf2c533f6f2fd94baarch64addc01ed52c2f06d633cd9c388eb7310d0554378b73a7f5c39f217e1081abcb5macosghcr.io/valkyoth/fluxheim@sha256:c738544766ef230b5903ae6f6ff8a681ef41c4c7265d2ef5d4e040db5a73cd37ghcr.io/valkyoth/fluxheim@sha256:0b57b7eb15dbf665c479f6fe59486f3df1f0d775b9fa95eef9b90976cabe4bfaghcr.io/valkyoth/fluxheim@sha256:4b3c32e8f23f09dc13c2c8896b77c5c148f693262f0ba14020576294327a51abghcr.io/valkyoth/fluxheim@sha256:0bd031a9b4e506a7a9b3b25bb00685972f8c8cf8bc6ce7b1a22f5fa3a53500adghcr.io/valkyoth/fluxheim@sha256:3cc3b5f4566b2305cf31cd029f730778d08b0cb6fa91f7b627d9bf6a196513dbghcr.io/valkyoth/fluxheim@sha256:0c959efa96e3b96c4caf5220f1d37e94497fc711bad19b3328e3e15b81e2102eghcr.io/valkyoth/fluxheim@sha256:1e7cc497a950939ea83d143f16269cc31ef885ff7ea09a6ca80de16a0a99a114ghcr.io/valkyoth/fluxheim@sha256:24993e1db066b6106c5a84899e72ce478a5b6db895cd503c739915368899953fghcr.io/valkyoth/fluxheim@sha256:1237664d117fca833f632ab570e550eb889fde0efb0b7490928536a4c62f6637ghcr.io/valkyoth/fluxheim@sha256:8385c021798df0800500f02ab3193de815cc4ff7ba902756c3860af58c69b0a3ghcr.io/valkyoth/fluxheim@sha256:258a4253bdd56ab2289825751be24686ca70777e1807e3d391b414290688311aghcr.io/valkyoth/fluxheim@sha256:1a1f703e4985d05cf06b2689a86d4e3d06daebcdf6811d2866f81b8f76ecca3cghcr.io/valkyoth/fluxheim@sha256:23283e8b6b0e7acf19e7c7de473566cb4293a90531fc6352deebb15d8c26e623ghcr.io/valkyoth/fluxheim@sha256:0cb5e7cd7b1c3acebd0f6b335ae7c2c068b1f65823969ba5104d87441876d38cghcr.io/valkyoth/fluxheim@sha256:7b5dd755d40d5bf5db9a462d72c2c50dc7c8183ef45fb3eea4f75a9833427796ghcr.io/valkyoth/fluxheim@sha256:3fa15264f731120fd1492630b2e754a8ce989104a5a831dac98869fb148ec208ghcr.io/valkyoth/fluxheim@sha256:3f220ef6735bf274ee854597a5a7334072fee0d04b2cf8d82f173a47e8aa0bd1ghcr.io/valkyoth/fluxheim@sha256:963deaf685655ec9bffa7eccd8e18aecde085e2fccf3a4160cd3c2389266f3efghcr.io/valkyoth/fluxheim@sha256:ae85e8d9498bcf33ccdc2f9a64f474851293265fdea7bc464b192f3b637f28b3ghcr.io/valkyoth/fluxheim@sha256:1aa2ca8f9d7cfa3c7f3e17a6ec12126df429e20141b8f70dd3fa20daca7728adGood "git" signature for 1921261+eldryoth@users.noreply.github.com with ED25519 key SHA256:EoLRQ5k4J5pYz3UMFmkrV798gYFNkToGS2xEPvebqB4This discussion was created from the release Fluxheim 1.6.29.
Beta Was this translation helpful? Give feedback.
All reactions