An overview of the latest Varnish Virtual Registry releases, describing feature additions, changes, fixes and removals per version.
Released: 2026-07-14
Varnish version: 6.0.18r3
Artifact Firewall version: 0.3.6
manifest_ttl, package_ttl, and other_ttl to virtual registries. manifest_ttl caches mutable manifests for a fixed window instead of revalidating on every request (digest-pinned manifests stay immutable); package_ttl caps the lifetime of immutable packages (mutable packages still revalidate); other_ttl sets the TTL for artifacts not classified as a manifest or package.prometheus exporter is selected via otel.metrics.exporter, Supervisor and Varnish metrics are exposed together on a /metrics scrape endpoint rather than pushed to an OTLP collector. The endpoint address is configurable via otel.metrics.prometheus_host and otel.metrics.prometheus_port (default localhost:9464).otel.metrics.scrape_interval (default 10s) to control how often varnishstat is polled for Varnish counter metrics, independent of the OTLP otel.metrics.export_interval (default 60s) push cadence./v2/ ping endpoint now has 1w keep to enable stale-if-error.Host header dropping a non-standard port when following a redirect to an ad-hoc backend. goto omits the port by default, which broke signed redirects whose signature includes the port (e.g. Artifactory direct-download endpoints). The port is now preserved.info/refs auth preflight using HEAD, which upstreams reject. This did not cause a client-visible error, but did cause a redundant fetch. It now uses GET, matching the git-upload-pack and LFS-batch preflights.Released: 2026-07-01
Varnish version: 6.0.18r2
Artifact Firewall version: 0.3.4
Released: 2026-06-29
Varnish version: 6.0.18r2
Artifact Firewall version: 0.3.2
%2f) in npm scoped package requests so scoped installs like npm install @scope/pkg are correctly identified by the parser.Released: 2026-06-17
Varnish version: 6.0.18r2
Artifact Firewall version: 0.3.2
npm login --auth-type web are no longer misclassified as package requests and blocked.Released: 2026-06-16
Varnish version: 6.0.18r2
Artifact Firewall version: 0.3.2
Released: 2026-06-13
Varnish version: 6.0.18r2
Artifact Firewall version: 0.3.2
redirects.deny_unknown_hosts and redirects.extra_known_hosts to restrict /redirectz upstream hosts and transparent redirect targets to configured remotes and extras./redirectz cache entries being keyed only on the path, so responses fetched from one upstream host could be served on requests targeting a different host at the same path.Released: 2026-06-11
Varnish version: 6.0.18r2
Artifact Firewall version: 0.3.1
POST /graphql) query responses, keyed by request body. Schema introspection queries get a longer TTL, while mutations, subscriptions, and rateLimit queries bypass the cache.preserve_host option to remotes. When enabled, the original request Host header is forwarded to the remote while the connection still targets the remote url. Useful when a single backend routes internally on the Host. Takes precedence over preserve_subdomain.virtual_registry.base_url, a default base URL applied to all registries that do not configure their own base_url.X-Forwarded-Proto: https from an upstream TLS terminator is now honored when auto-detecting the request scheme for base_url. Varnish also sets X-Forwarded-Proto toward the remote when the inbound request was TLS or when the registry’s base_url uses https://.Host header (a bare IPv4/IPv6 literal or localhost, e.g. clients reaching a node by IP or over a local tunnel) now have their Host rewritten to the host of the applicable base_url (registry-specific or global), so they are handled as if they had arrived at the registry’s canonical hostname.base_url.Set-Cookie on JFrog UI and OAuth callback responses, breaking SSO login flows.Released: 2026-06-03
Varnish version: 6.0.18r1
Artifact Firewall version: 0.3.1
disable_cache option to disable artifact caching on a per-registry basis./redirectz URL matrix parameters, emitted as an additional ;sig=... matrix parameter. Enable via virtual_registry.redirects.signing.enabled; the signing key is read from the environment variable named in virtual_registry.redirects.signing.key_env./redirectz endpoint entirely through virtual_registry.redirects.enabled.integrated deployment mode behind Virtual Registry, and now registers manifest transformers for the NuGet and Maven ecosystems in addition to npm and PyPI.otel.endpoint configuration that sets OTEL_EXPORTER_OTLP_ENDPOINT, used by all signals when no signal-specific endpoint is configured. The OTLP SDK auto-appends /v1/<signal> for HTTP protocols.firewall.address was omitted from config.fsnotify on user-provided certificates so that they are reloaded when files change on disk.Released: 2026-05-11
Varnish version: 6.0.17r3
Artifact Firewall version: 0.2.2
cache_req_body_limit to set the maximum request body size to buffer for cacheable POSTs (e.g. git-upload-pack).agent and session-id telemetry attributes are excluded from the cache key.Released: 2026-04-21
Varnish version: 6.0.16r13
arm64.base_url, enabling caching of both dist archive downloads and source repository clones./redirectz endpoint./v2/ ping endpoint to 60s.arm64 Varnish packages available for these distributions, and no customers currently relying on them.Released: 2026-04-13
Varnish version: 6.0.16r13
varnish-supervisor packages for Debian Trixievarnish-supervisor packages for RHEL 10Released: 2026-03-23
Varnish version: 6.0.16r13
--validate flag which validates the config and exits.Released: 2026-03-12
Varnish version: 6.0.16r13
base_url to either http:// or https:// without a domain now determines the scheme of client redirects. This is useful for deployments where the Virtual Registry is deployed behind a TLS terminating proxy, especially when preserve_subdomain is used for the Virtual Registry remotes.Released: 2026-03-05
Varnish version: 6.0.16r12
dns_ttl option to remotes. This can be used to override the DNS resolution interval indicated by DNS records.routes option to virtual registries. A route is a glob pattern (fnmatch) that enables more flexible registry routing, where only subdomain-based routing was available before. The subdomain routing still has the highest order of precedence, with routes being matched against the Host header in order of appearance.preserve_subdomain option to remotes. When used, the incoming subdomain (final component) is appended to the remote Host header when fetching from the remote. The final hostname is also used for DNS and TLS SNI.readonly option to virtual registries. When enabled, all uploads to the virtual registry are blocked.download_url in manifests with the Virtual Registry base_url.base_url.preserve_manifest option to virtual registries. When enabled, base_url insertion into manifests is disabled.Released: 2026-02-27
Varnish version: 6.0.16r12
Released: 2026-02-23
Varnish version: 6.0.16r10
Added OTEL logs support via the otel.logs configuration block. Logs are exported to a configurable OTLP endpoint and do not require a license.
Added configurable trace sampling via the otel.tracing.sampler configuration option. Supported samplers: always_on, always_off, traceidratio, parentbased_always_on, parentbased_always_off, parentbased_traceidratio. Ratio-based samplers accept an otel.tracing.sampler_arg value between 0.0 and 1.0.
Added a cache invalidation yKeys for resource types. All objects now get a resource_manifest, resource_package or resource_other key.
Added base_url option to the virtual registry configuration. This is used whenever the proxy needs to rewrite a response header or body to direct the client back to the virtual registry.
Added policy for proxying JFrog UI.
Added dns_ttl option to remotes. When set, this option overrides the DNS resolution interval for the remote, ignoring DNS record TTLs.
Upgraded varnish-otel to v2.2.0, which adds trace sampling and OTEL logs support.
Remote endpoints are now resolved preemptively in vcl_backend_fetch using utils.resolve_backend(). The Host header is explicitly set based on the remote URL Host. This should not produce a noticeable change.
Improved cache policy for NPM traffic. All /-/ endpoints are now marked uncacheable. Manifests are now always marked as must-revalidate, meaning they are not cached, but coalesced and candidates for 304 revalidation and stale-if-error.
Added stricter checking for undefined configuration options. This should make it easier to catch typos in the YAML config.
The WWW-Authenticate response header is now transparently rewritten when it directs the client to a different domain than the effective base_url. The original URL is preserved and used when the client comes back to authenticate. This enables auth when the upstream registry is not directly accessible by the client.
For 202 Created responses, the Location header is also rewritten in the same fashion as WWW-Authenticate. This enables OCI uploads when the upstream registry is not directly accessible by the client.
Fixed varnish-otel failing to find Varnish shared memory when workdir is not explicitly configured.
Fixed retrying requests when the load balancer has no remaining healthy and unused backends available.
Fixed a beresp.ttl + req.ttl interaction that resulted in objects marked as must-revalidate not being considered for 304 revalidation and stale-if-error.
Fixed an issue where OCI uploads would fail with a 404 because the registry returns different responses for HEAD and GET. HEAD requests from OCI clients are now proxied through without a lookup in cache.
Fixed IPv6 client IPs not being considered local for cache invalidation access.
Released: 2025-12-17
Varnish version: 6.0.16r8
varnish-plus is released. Each varnish-supervisor release targets a specific minimum version of Varnish, but it should be possible to use a newer version of varnish-plus than the minimum version.Released: 2025-12-01
Varnish version: 6.0.16r7
Released: 2025-12-01
Varnish version: 6.0.16r7
Released: 2025-11-27
Varnish version: 6.0.16r7
book_size to tune the size of persisted storage books.default_ttl, default_grace, and default_keep options for Virtual Registries to override the global varnish.params with the same name. Like the global params, these only apply to responses that don’t have an explicit cache policy or Cache-Control header from the remote registry.varnish.storage has changed. While this technically a breaking change, it’s a licensed feature that has not been put in production anywhere yet. We saw this as an opportunity to do some final polish on the config format without introducing a real breaking change.varnish.storage subsystem. The MSE configuration should now be changed to reflect changes in the storage configuration in all cases.Released: 2025-11-14
Varnish version: 6.0.16r6
*.whl, *.tar.gz, and *.zip objects are now cached indefinitely while */simple/* is explicitly treated as uncacheable./etc/varnish now has the correct varnish owner in Docker.maven-metadata.xml is explicitly treated as uncacheable.Released: 2025-11-04
Varnish version: 6.0.16r4