@@ -279,3 +279,35 @@ This release was made possible by the following 33 contributors:
279279- Henry [ ** (@cootshk )** ] ( https://github.com/cootshk )
280280- Martin Joerg [ ** (@mjoerg )** ] ( https://github.com/mjoerg )
281281- Farid Zakaria [ ** (@fzakaria )** ] ( https://github.com/fzakaria )
282+ # Release 2.33.3 (2026-02-13)
283+
284+ - S3 binary caches now use virtual-hosted-style addressing by default [ #15208 ] ( https://github.com/NixOS/nix/issues/15208 )
285+
286+ S3 binary caches now use virtual-hosted-style URLs
287+ (` https://bucket.s3.region.amazonaws.com/key ` ) instead of path-style URLs
288+ (` https://s3.region.amazonaws.com/bucket/key ` ) when connecting to standard AWS
289+ S3 endpoints. This enables HTTP/2 multiplexing and fixes TCP connection
290+ exhaustion (TIME_WAIT socket accumulation) under high-concurrency workloads.
291+
292+ A new ` addressing-style ` store option controls this behavior:
293+
294+ - ` auto ` (default): virtual-hosted-style for standard AWS endpoints, path-style
295+ for custom endpoints.
296+ - ` path ` : forces path-style addressing (deprecated by AWS).
297+ - ` virtual ` : forces virtual-hosted-style addressing (bucket names must not
298+ contain dots).
299+
300+ Bucket names containing dots (e.g., ` my.bucket.name ` ) automatically fall back
301+ to path-style addressing in ` auto ` mode, because dotted names create
302+ multi-level subdomains that break TLS wildcard certificate validation.
303+
304+ Example using path-style for backwards compatibility:
305+
306+ ```
307+ s3://my-bucket/key?region=us-east-1&addressing-style=path
308+ ```
309+
310+ Additionally, TCP keep-alive is now enabled on all HTTP connections, preventing
311+ idle connections from being silently dropped by intermediate network devices
312+ (NATs, firewalls, load balancers).
313+
0 commit comments