← Orca documentation

Varnish Orca Configuration

Default Configuration

The default configuration included in the varnish/orca Docker image is:

varnish:
  http:
  - port: 80
virtual_registry:
  registries:
  - name: dockerhub
    default: true
    remotes:
    - url: https://docker.io
    - url: https://mirror.gcr.io
  - name: quay
    remotes:
    - url: https://quay.io
  - name: ghcr
    remotes:
    - url: https://ghcr.io
  - name: k8s
    remotes:
    - url: https://registry.k8s.io
  - name: npmjs
    remotes:
    - url: https://registry.npmjs.org
  - name: go
    remotes:
    - url: https://proxy.golang.org
  - name: github
    remotes:
    - url: https://github.com
  - name: gitlab
    remotes:
    - url: https://gitlab.com

See the installation guide to customize your configuration.

Virtual Registry

virtual_registry:
  registries:
   - name: example
     remotes:
     - url: https://example.com

Configuration for the Virtual Registry. A registry should have a name and must have a remote, all other parameters are optional.

registries list

List of virtual registries.

name string

virtual_registry:
  registries:
  - name: example

Default: default

The registry name should be short, unique, and recognizable. It is used for subdomain routing when there are multiple registries and metrics are segmented on registry name.

default boolean

virtual_registry:
  registries:
  - name: example
    default: true

Default: false

If set to true, all requests that don’t match any other registry subdomain will be handled by this registry. Only one registry can be the default registry.

If only one registry is specified, it automatically becomes the default registry.

load_balancer string

virtual_registry:
  registries:
  - name: example
    load_balancer: random

Default: fallback

The load balancing policy to use when there are multiple remotes.

  • fallback: Use remotes in order of appearance. The first remote is selected first, then retries go down through the list.
  • random: Balance traffic to remotes evenly. A random remote is selected from the list and retries never pick the same backend twice for a given fetch.
  • hash: Pick the same remote for the same cache key. A consistent hashing algorithm is used to select a remote and retries pick new remotes in a consistent order.

auth_ttl number

Note: Orca Premium feature

virtual_registry:
  registries:
  - name: example
    auth_ttl: 3600

Default: 3600

The number of seconds to cache each users authorization per artifact. Setting this to 0 causes the users authorization to be checked against the remote registry on every request.

default_ttl number

virtual_registry:
  registries:
  - name: example
    default_ttl: 3600

Default: 120

The number of seconds to cache objects that are not otherwise covered by a specific cache policy or considered uncacheable.

Overrides the global varnish.params.default_ttl for this registry.

default_grace number

virtual_registry:
  registries:
  - name: example
    default_grace: 3600

Default: 10

The number of seconds to grace objects that are not otherwise covered by a specific cache policy or considered uncacheable.

Overrides the global varnish.params.default_grace for this registry.

default_keep number

virtual_registry:
  registries:
  - name: example
    default_keep: 3600

Default: 0

The number of seconds to keep stale objects that are not otherwise covered by a specific cache policy or considered uncacheable.

Overrides the global varnish.params.default_keep for this registry.

extra_vcl list

Note: Orca Premium feature

virtual_registry:
  registries:
  - name: example
    extra_vcl:
    - /etc/varnish-supervisor/example.vcl

Extra VCL to prepend to the configuration generated by the Virtual Registry. Extra VCLs are included in the order they appear in this list.

base_url string

virtual_registry:
  registries:
  - name: example
    base_url: https://my-registry.example.com

Base URL of the virtual registry. This is used when the registry needs to generate URLs that point back to itself (e.g., in manifests or redirect responses).

readonly boolean

virtual_registry:
  registries:
  - name: example
    readonly: true

Default: false

Whether this registry should be treated as read-only. When enabled, write operations (push, delete) are rejected.

preserve_manifest boolean

virtual_registry:
  registries:
  - name: example
    preserve_manifest: true

Default: false

Preserve original manifests from the remote without inserting the base URL. When disabled, the registry rewrites manifest URLs to point through the virtual registry.

routes list

virtual_registry:
  registries:
  - name: example
    routes:
    - glob: "*.example.com"

Additional routes to associate with this registry. Routes allow matching requests to registries based on the Host header using glob patterns.

glob string

virtual_registry:
  registries:
  - name: example
    routes:
    - glob: "*.example.com"

Glob pattern to match against the Host header for routing requests to this registry.

remotes list

virtual_registry:
  registries:
   - name: example
     remotes:
     - url: https://example.com

List of remotes. See remotes configuration.

Remotes

Configuration of remotes for virtual_registry.

virtual_registry:
  registries:
   - name: example
     remotes:
     - url: https://example.com

Remotes are selected according to the defined load_balancer policy (fallback by default). When a remote does not respond, or responds with response status 5xx, a different remote is selected and the fetch is retried. Fetches are retried until one of the following conditions are met:

  • We get a non-5xx response from the remote.
  • We have retried varnish.params.max_retries times.
  • We have tried all the remotes.

url string

# (...)
     remotes:
     - url: https://example.com

URL of the remote, on the form scheme://host:port.

Scheme can be http or https. If omitted, defaults to https if port has been set to 443, defaults to http otherwise.

Host can be an IP address or a domain name. If the domain name resolves to multiple IP addresses, traffic is load balanced evenly over them.

priority integer

# (...)
     remotes:
     - url: https://example.com
       priority: 2

Default: 1

Priority can be used to divide a list of remotes into distinct load balancer groups. A remote from the highest priority group is always chosen first, and groups with lower priority are only selected if none of the higher priority give a successful response.

Priority increases with a lower numerical value. 1 is the highest possible priority.

weight number

# (...)
     remotes:
     - url: https://example.com
       weight: 10

Default: 1

Weight can be used to shift the traffic distribution over the list of remotes. Has no effect when the failover load balancer policy is used.

Weight increases with a higher numerical value. 1 is the lowest possible weight.

dns_ttl number

# (...)
     remotes:
     - url: https://example.com
       dns_ttl: 300

Override the interval at which DNS is resolved for this remote, in seconds. By default, DNS resolution follows the TTL from the DNS response.

preserve_subdomain boolean

# (...)
     remotes:
     - url: https://example.com
       preserve_subdomain: true

Default: false

Preserve the subdomain from the original request when fetching from this remote. When enabled, the subdomain portion of the incoming request’s Host header is prepended to the remote’s hostname. The final hostname is also used for DNS and TLS SNI when accessing the remote.

probe

Configuration for a health check probe to monitor the availability of a remote.

url string

# (...)
     remotes:
     - url: https://example.com
       probe:
         url: /healthz

URL of the remote, on the form /path. It is mandatory to set either url or tcponly, and they are mutually exclusive.

interval number

Default: 5

The number of seconds between health checks.

timeout number

# (...)
     remotes:
     - url: https://example.com
       probe:
         url: /healthz
         interval: 5

Default: 2

The timeout in seconds for each health check.

expected_response integer

# (...)
     remotes:
     - url: https://example.com
       probe:
         url: /healthz
         expected_response: 404

Default: 200

Expected HTTP status code from the health check endpoint.

window integer

# (...)
     remotes:
     - url: https://example.com
       probe:
         url: /healthz
         window: 5

Default: 8

The number of most recent health check results to consider when determining health.

threshold integer

# (...)
     remotes:
     - url: https://example.com
       probe:
         url: /healthz
         threshold: 4

Default: 3

The minimum number of successful checks in the window required to be considered healthy

tcponly boolean

# (...)
     remotes:
     - url: https://example.com
       probe:
         tcponly: true

Default: false

Perform a TCP health check instead of HTTP.

Varnish

varnish:
  http:
  - port: 80

General configuration for Varnish. At least one http or https listen endpoint must be specified, all other parameters are optional.

http list

A list of HTTP ports for Varnish to bind and listen to. Varnish needs at least one http port or one https port.

port integer

varnish:
  http:
  - port: 80

The port number to listen to. If address is not also specified, varnish will listen on all available interfaces.

address string

varnish:
  http:
  - address: 127.0.0.1:80

The interface address to bind to. Can specify both address and port, or used in combination with port.

https list

A list of HTTPS listeners for Varnish to bind to. Each listener must have at least one certificate.

port integer

varnish:
  https:
  - port: 443
    certificates:
    - self_singed: example.com

The port number to listen to. If address is not also specified, varnish will listen on all available interfaces.

address string

varnish:
  http:
  - address: 127.0.0.1:443
    certificates:
    - self_singed: example.com

The interface address to bind to. Can specify both address and port, or used in combination with port.

certificates list

The certificates to use for this HTTPS listener.

combined string

varnish:
  https:
  - port: 443
    certificates:
    - combined: /tmp/combined.pem

Path to a combined certificate and private key PEM file. Mutually exclusive with cert and private_key.

cert string

varnish:
  https:
  - port: 443
    certificates:
    - cert: /etc/varnish-supervisor/cert.crt
      private_key: /etc/varnish-supervisor/private.key

Path to a certificate PEM file. If specified, a private_key must be specified as well.

private_key string

varnish:
  https:
  - port: 443
    certificates:
    - cert: /etc/varnish-supervisor/cert.crt
      private_key: /etc/varnish-supervisor/private.key

Path to a private key PEM file. If specified, a cert must be specified as well.

self_signed string

varnish:
  https:
  - port: 443
    certificates:
    - self_signed: "localhost"
    - self_signed: "*.localhost"
    - self_signed: "example.com"

Generate a self-signed certificate. This is useful for testing with clients that accept non-trusted certificates. Supports wildcards for wildcard TLS certificates.

For automatic trusted TLS, see ACME.

storage

Note: Orca Premium feature

Configure a persistent cache for Varnish to use. This will generate the appropriate Massive Storage Engine (MSE) 4 configuration and initialize it with mkfs.mse4. Changes to the config will be applied upon restart of the Supervisor.

stores list

A list of stores for the persisted cache. A store appears as a single large file on the file system and is used to persist chunks of cached objects.

An auxiliary file called a book is created alongside the store, which keeps track of where the object chunks in the store are and other metadata such as cache invalidation keys and checksums for durable storage.

Each store must have a name, path and size.

name string

varnish:
  storage:
    stores:
    - name: disk1
      path: /etc/varnish-supervisor/storage/disk1
      size: 1000G

The unique identifying name for this store.

path string

varnish:
  storage:
    stores:
    - name: disk1
      path: /etc/varnish-supervisor/storage/disk1
      size: 1000G

Path to a directory where the the store and book files will be created at Supervisor startup. The backing storage must have space to fit size bytes.

size string

varnish:
  storage:
    stores:
    - name: disk1
      path: /etc/varnish-supervisor/storage/disk1
      size: 1000G

Size of the store to create. Available case-insensitive units are K, M, G, and T.

The size includes the size of the book (5G by default) and filesystem overhead (1G), so the size of the store file can be calculated as:

store_size = size - book_size - 1G.

Must be larger than book_size + 1G.

book_size string

varnish:
  storage:
    stores:
    - name: disk1
      path: /etc/varnish-supervisor/storage/disk1
      size: 1000G
      book_size: 2G

Default: 5G

Change the size of a store’s book. When the size of a book is increased, the size of the store is decreased, and vice versa.

category string

varnish:
  storage:
    default_category: other
    stores:
    - name: disk1
      path: /disk1
      size: 1000G
      category: media.video
    - name: disk2
      path: /disk2
      size: 1000G
      category: media.video
    - name: icons
      path: /disk3/icons
      size: 50G
      category: media.images.icons
    - name: pictures
      path: /disk3/pictures
      size: 150G
      category: media.images.pictures
    - name: other
      path: /disk3/other
      size: 800G
      category: other

Assign a category to the store. This reserves the store to be used exclusively for objects of the same category. Multiple stores can have the same category, in which case objects are spread evenly over the stores.

Object category can be set in VCL sub vcl_backend_response with the mse4 VMOD:

mse4.set_category("media.video");

If no category has been set in VCL, the category defined by default_category is used.

Categories are a tree structure, and each store category must be a leaf-node in that tree. This means that if one store has the category media.images.icons, another store cannot have the category media.images.

When categories are used, all stores must have a category and default_category must be set.

default_category string

varnish:
  storage:
    default_category: blobs
    stores:
    - name: manifests
      path: /disk1/manifests
      size: 100G
      category: manifests
    - name: objects
      path: /disk1/objects
      size: 900G
      category: objects

The default category to use if no category have been set in VCL.

Required if categories are used.

admin_port integer

varnish:
  admin_port: 1234

Default: 1092

Target port for the reverse admin interface.

work_dir string

varnish:
  work_dir: /var/lib/varnish

Default: Derived from system defaults

Varnish working directory (equivalent to varnishd -n). This is the directory where Varnish stores its shared memory logs and other runtime files.

path string

varnish:
  path: /path/to/varnishd

Default: Derived from system $PATH

Path to the varnishd binary to use.

params

varnish:
  params:
    workspace_backend: 128k

Parameters for Varnish. See params.

Varnish Parameters

Parameters for varnish.

varnish:
  params:
    workspace_backend: 128k

accept_filter boolean

varnish:
  params:
    accept_filter:: true

Default: true

Enable kernel accept-filters.

acceptor_sleep_decay number

varnish:
  params:
    acceptor_sleep_decay:: 0.9

Default: 0.9

Sleep duration reduction for each successful accept (0.9 = reduce by 10%).

acceptor_sleep_incr number

varnish:
  params:
    acceptor_sleep_incr:: 0

Default: 0

How much longer we sleep, each time we fail to accept a new connection.

acceptor_sleep_max number

varnish:
  params:
    acceptor_sleep_max:: 0.05

Default: 0.05

Maximum sleep duration between attempts to accept new connections.

auto_restart boolean

varnish:
  params:
    auto_restart:: true

Default: true

Automatically restart the child/worker process if it dies.

backend_cooloff number

varnish:
  params:
    backend_cooloff:: 60

Default: 60

How long we wait before cleaning up deleted backends.

backend_idle_timeout number

varnish:
  params:
    backend_idle_timeout:: 60

Default: 60

Timeout before we close unused backend connections.

backend_local_error_holddown number

varnish:
  params:
    backend_local_error_holddown:: 10

Default: 10

Prevent connection attempts after local resource shortage errors.

backend_remote_error_holddown number

varnish:
  params:
    backend_remote_error_holddown:: 0.25

Default: 0.25

Prevent connection attempts after remote connection errors.

backend_wait_limit integer

varnish:
  params:
    backend_wait_limit:: 0

Default: 0

Maximum transactions that can queue waiting for a backend connection.

backend_wait_timeout number

varnish:
  params:
    backend_wait_timeout:: 0

Default: 0

Default time transactions wait for backend connections before giving up.

ban_cutoff integer

varnish:
  params:
    ban_cutoff:: 0

Default: 0

Expurge long tail content to keep bans below this value. 0 disables.

ban_dups boolean

varnish:
  params:
    ban_dups:: true

Default: true

Eliminate older identical bans when a new ban is added.

ban_lurker_age number

varnish:
  params:
    ban_lurker_age:: 60

Default: 60

The ban lurker will ignore bans until they are this old.

ban_lurker_batch integer

varnish:
  params:
    ban_lurker_batch:: 1000

Default: 1000

Ban lurker sleeps after examining this many objects.

ban_lurker_holdoff number

varnish:
  params:
    ban_lurker_holdoff: 0.01

Default: 0.01

How long ban lurker sleeps when giving way to lookup due to lock contention.

ban_lurker_sleep number

varnish:
  params:
    ban_lurker_sleep:: 0.01

Default: 0.01

How long ban lurker sleeps after examining objects.

between_bytes_timeout number

varnish:
  params:
    between_bytes_timeout:: 60

Default: 60

Seconds to wait between bytes received from backend before giving up.

cli_limit string

varnish:
  params:
    cli_limit:: 128k

Default: 128k

Maximum size of CLI response.

cli_timeout number

varnish:
  params:
    cli_timeout:: 60

Default: 60

Timeout for child replies to CLI requests from management.

clock_skew integer

varnish:
  params:
    clock_skew: 10

Default: 10

How much clockskew we accept between backend and our own clock.

clock_step number

varnish:
  params:
    clock_step:: 10

Default: 10

How much observed clock step we accept before we panic.

connect_timeout number

varnish:
  params:
    connect_timeout:: 3.5

Default: 3.5

Default connection timeout for backend connections.

critbit_cooloff number

varnish:
  params:
    critbit_cooloff:: 180

Default: 180

How long critbit hasher keeps deleted objheads on cooloff list.

debug string

varnish:
  params:
    debug:: ""

Default: ""

Enable/Disable various kinds of debugging.

default_grace number

varnish:
  params:
    default_grace:: 10

Default: 10

Default grace period for expired objects.

default_keep number

varnish:
  params:
    default_keep:: 0

Default: 0

Default keep period for objects after grace.

default_ttl number

varnish:
  params:
    default_ttl:: 120

Default: 120

TTL assigned to objects if neither backend nor VCL assigns one.

epitaphs integer

varnish:
  params:
    epitaphs:: 3

Default: 3

Maximum messages child can add to its gravestone.

esi_iovs integer

varnish:
  params:
    esi_iovs:: 10

Default: 10

Number of io vectors to allocate on thread workspace for ESI requests.

esi_limit integer

varnish:
  params:
    esi_limit:: 10

Default: 10

Limit for ESI fragments processed in parallel at each ESI level.

experimental string

varnish:
  params:
    experimental:: ""

Default: ""

Enable/Disable experimental features.

feature string

varnish:
  params:
    feature:: +http2

Default: +http2

Enable/Disable various minor features.

fetch_chunksize string

varnish:
  params:
    fetch_chunksize:: 16k

Default: 16k

Default chunksize used by fetcher.

fetch_maxchunksize string

varnish:
  params:
    fetch_maxchunksize:: 0.25G

Default: 0.25G

Maximum chunksize we attempt to allocate from storage.

first_byte_timeout number

varnish:
  params:
    first_byte_timeout:: 60

Default: 60

Default timeout for receiving first byte from backend.

gzip_buffer string

varnish:
  params:
    gzip_buffer:: 32k

Default: 32k

Size of malloc buffer used for gzip processing.

gzip_level integer

varnish:
  params:
    gzip_level:: 6

Default: 6

Gzip compression level: 0=debug, 1=fast, 9=best.

gzip_memlevel integer

varnish:
  params:
    gzip_memlevel:: 6

Default: 6

Gzip memory level 1=slow/least, 9=fast/most compression.

h2_header_table_size string

varnish:
  params:
    h2_header_table_size:: 4k

Default: 4k

HTTP2 header table size.

h2_initial_window_size string

varnish:
  params:
    h2_initial_window_size:: 65535b

Default: 65535b

HTTP2 initial flow control window size.

h2_max_concurrent_streams integer

varnish:
  params:
    h2_max_concurrent_streams: 100

Default: 100

HTTP2 maximum number of concurrent streams.

h2_max_frame_size string

varnish:
  params:
    h2_max_frame_size:: 16k

Default: 16k

HTTP2 maximum per frame payload size.

h2_max_header_list_size string

varnish:
  params:
    h2_max_header_list_size:: 0b

Default: 0b

HTTP2 maximum size of uncompressed header list.

h2_rapid_reset number

varnish:
  params:
    h2_rapid_reset:: 1

Default: 1

Threshold for treating RST_STREAM as suspect after HEADERS.

h2_rapid_reset_limit integer

varnish:
  params:
    h2_rapid_reset_limit:: 100

Default: 100

Maximum allowed stream resets over time period.

h2_rapid_reset_period number

varnish:
  params:
    h2_rapid_reset_period:: 60

Default: 60

Sliding window duration for h2_rapid_reset_limit.

h2_rx_window_increment string

varnish:
  params:
    h2_rx_window_increment: 1M

Default: 1M

HTTP2 receive window increments.

h2_rx_window_low_water string

varnish:
  params:
    h2_rx_window_low_water: 10M

Default: 10M

HTTP2 receive window low water mark.

h2_rxbuf_storage string

varnish:
  params:
    h2_rxbuf_storage: Transient

Default: Transient

Storage backend for HTTP/2 receive buffers.

h2_window_timeout number

varnish:
  params:
    h2_window_timeout: 5

Default: 5

HTTP2 time limit without window credits.

http_brotli_support boolean

varnish:
  params:
    http_brotli_support: true

Default: true

Enable brotli support.

http_gzip_support boolean

varnish:
  params:
    http_gzip_support: true

Default: true

Enable gzip support.

http_max_hdr integer

varnish:
  params:
    http_max_hdr: 64

Default: 64

Maximum number of HTTP header lines.

http_range_support boolean

varnish:
  params:
    http_range_support: true

Default: true

Enable support for HTTP Range headers.

http_req_hdr_len string

varnish:
  params:
    http_req_hdr_len: 8k

Default: 8k

Maximum length of any HTTP client request header.

http_req_size string

varnish:
  params:
    http_req_size: 32k

Default: 32k

Maximum bytes of HTTP client request.

http_resp_hdr_len string

varnish:
  params:
    http_resp_hdr_len: 8k

Default: 8k

Maximum length of any HTTP backend response header.

http_resp_size string

varnish:
  params:
    http_resp_size: 32k

Default: 32k

Maximum bytes of HTTP backend response.

idle_send_timeout number

varnish:
  params:
    idle_send_timeout: 60

Default: 60

Send timeout for individual pieces of data on client connections.

last_byte_timeout number

varnish:
  params:
    last_byte_timeout: 0

Default: 0

Maximum time to wait for complete backend response.

listen_depth integer

varnish:
  params:
    listen_depth: 1024

Default: 1024

Listen queue depth.

lru_interval number

varnish:
  params:
    lru_interval: 2

Default: 2

Grace period before object moves on LRU list.

max_esi_depth integer

varnish:
  params:
    max_esi_depth: 5

Default: 5

Maximum depth of esi:include processing.

max_restarts integer

varnish:
  params:
    max_restarts: 4

Default: 4

Upper limit on how many times a request can restart.

max_retries integer

varnish:
  params:
    max_retries: 4

Default: 4

Upper limit on how many times a backend fetch can retry.

max_vcl integer

varnish:
  params:
    max_vcl: 100

Default: 100

Threshold of loaded VCL programs.

max_vcl_handling integer

varnish:
  params:
    max_vcl_handling: 1

Default: 1

Behaviour when attempting to exceed max_vcl loaded VCL.

memory_arenas integer

varnish:
  params:
    memory_arenas: 0

Default: 0

Number of jemalloc arenas for object payload storage.

memory_stat_interval number

varnish:
  params:
    memory_stat_interval: 0.1

Default: 0.1

Interval between memory usage statistics updates.

memory_target string

varnish:
  params:
    memory_target: 80%

Default: 80%

Target RssAnon memory usage when memory governor is active.

nuke_limit integer

varnish:
  params:
    nuke_limit: 50

Default: 50

Maximum objects we attempt to nuke to make space.

numa_aware boolean

varnish:
  params:
    numa_aware: false

Default: false

Become NUMA aware for better CPU utilization.

object_mutex_slots integer

varnish:
  params:
    object_mutex_slots: 4096

Default: 4096

Number of mutex and condvar slots for per object signalling.

pcre_match_limit integer

varnish:
  params:
    pcre_match_limit: 10000

Default: 10000

Limit for calls to internal match() function in pcre_exec().

pcre_match_limit_recursion integer

varnish:
  params:
    pcre_match_limit_recursion: 20

Default: 20

Recursion depth-limit for internal match() function.

ping_interval integer

varnish:
  params:
    ping_interval: 3

Default: 3

Interval between pings from parent to child.

pipe_timeout number

varnish:
  params:
    pipe_timeout: 60

Default: 60

Idle timeout for PIPE sessions.

pool_req string

varnish:
  params:
    pool_req: 10,100,10

Default: 10,100,10

Parameters for per worker pool request memory pool.

pool_sess string

varnish:
  params:
    pool_sess: 10,100,10

Default: 10,100,10

Parameters for per worker pool session memory pool.

pool_sslbuffer string

varnish:
  params:
    pool_sslbuffer: 10,100,10

Default: 10,100,10

Parameters for the SSL buffer pool (min_pool, max_pool, max_age).

pool_vbo string

varnish:
  params:
    pool_vbo: 10,100,10

Default: 10,100,10

Parameters for per worker pool VBO memory pool.

prefer_ipv6 boolean

varnish:
  params:
    prefer_ipv6: false

Default: false

Prefer IPv6 address when connecting to backends.

rush_exponent integer

varnish:
  params:
    rush_exponent: 3

Default: 3

How many parked requests we start for each completed request on an object.

reuseport boolean

varnish:
  params:
    reuseport: false

Default: false

Enable SO_REUSEPORT socket option.

send_timeout number

varnish:
  params:
    send_timeout: 600

Default: 600

Total timeout for ordinary HTTP1 responses.

shortlived number

varnish:
  params:
    shortlived: 10

Default: 10

Objects created with TTL shorter than this are not subject to LRU.

shutdown_close boolean

varnish:
  params:
    shutdown_close: false

Default: false

Control if listen sockets should be closed during shutdown_delay upon reception of SIGTERM.

shutdown_delay number

varnish:
  params:
    shutdown_delay: 0

Default: 0

Delay before shutting down the management process upon reception of SIGTERM.

sigsegv_handler boolean

varnish:
  params:
    sigsegv_handler: true

Default: true

Install a signal handler to dump debug info on segmentation faults, bus errors, and abort signals.

slicer_excess_ratio number

varnish:
  params:
    slicer_excess_ratio: 0.5

Default: 0.5

How much larger than the configured segment size the last segment is allowed to be.

ssl_buffer string

varnish:
  params:
    ssl_buffer: 20k

Default: 20k

Size of the SSL buffer.

startup_timeout number

varnish:
  params:
    startup_timeout: 600

Default: 600

How long to wait for child startup.

syslog_cli_traffic boolean

varnish:
  params:
    syslog_cli_traffic: true

Default: true

Log all CLI traffic to syslog(LOG_INFO).

tcp_fastopen boolean

varnish:
  params:
    tcp_fastopen: false

Default: false

Enable the TCP Fast Open extension.

tcp_keepalive_intvl number

varnish:
  params:
    tcp_keepalive_intvl: 75

Default: 75

The number of seconds between TCP keep-alive probes.

tcp_keepalive_probes integer

varnish:
  params:
    tcp_keepalive_probes: 9

Default: ""

Maximum number of TCP keep-alive probes to send before killing the connection.

tcp_keepalive_time number

varnish:
  params:
    tcp_keepalive_time: 7200

Default: ""

Seconds a connection must be idle before TCP sends keep-alive probes.

thread_pool_add_delay number

varnish:
  params:
    thread_pool_add_delay: 0

Default: 0

Wait at least this long after creating a thread.

thread_pool_destroy_delay number

varnish:
  params:
    thread_pool_destroy_delay: 1

Default: 1

Wait at least this long after destroying a thread pool.

thread_pool_fail_delay number

varnish:
  params:
    thread_pool_fail_delay: 0.2

Default: 0.2

Wait at least this long after a failed thread creation.

thread_pool_max integer

varnish:
  params:
    thread_pool_max: 5000

Default: 5000

Maximum number of worker threads in each pool.

thread_pool_min integer

varnish:
  params:
    thread_pool_min: 100

Default: 100

Minimum number of worker threads in each pool.

thread_pool_reserve integer

varnish:
  params:
    thread_pool_reserve: 0

Default: 0

The number of worker threads reserved for vital tasks.

thread_pool_stack string

varnish:
  params:
    thread_pool_stack: 48k

Default: 48k

Worker thread stack size.

thread_pool_timeout number

varnish:
  params:
    thread_pool_timeout: 300

Default: 300

Thread idle threshold for destroying threads.

thread_pool_track boolean

varnish:
  params:
    thread_pool_track: false

Default: false

Keep track of running worker threads and tasks queued in the pools.

thread_pool_watchdog number

varnish:
  params:
    thread_pool_watchdog: 60

Default: 60

If no queued work has been released for this long, the worker process panics itself.

thread_pools integer

varnish:
  params:
    thread_pools: 2

Default: 2

Number of worker thread pools.

thread_queue_limit integer

varnish:
  params:
    thread_queue_limit: 0

Default: 0

Permitted request queue length per thread-pool.

thread_stats_rate integer

varnish:
  params:
    thread_stats_rate: 10

Default: 10

Worker thread statistics update rate limit.

timeout_idle number

varnish:
  params:
    timeout_idle: 5

Default: 5

Idle timeout for client connections.

timeout_linger number

varnish:
  params:
    timeout_linger: 0.05

Default: 0.05

How long to linger on connections when close requested.

timeout_req number

varnish:
  params:
    timeout_req: 5

Default: 5

Max time to receive client request.

timeout_reqbody number

varnish:
  params:
    timeout_reqbody: 0

Default: 0

Maximum time to receive a client request body.

tls_handshake_timeout number

varnish:
  params:
    tls_handshake_timeout: 8

Default: 8

Default timeout for completion of the TLS handshake.

tls_ja3 boolean

varnish:
  params:
    tls_ja3: false

Default: false

Enable JA3 fingerprint.

tls_ocsp_auto boolean

varnish:
  params:
    tls_ocsp_auto: false

Default: false

Enable automatic OCSP staple configuration.

tls_ocsp_default_ttl number

varnish:
  params:
    tls_ocsp_default_ttl: 7200

Default: 7200

How long to consider an OCSP response fresh if it lacks a nextUpdate property.

tls_ocsp_dir string

varnish:
  params:
    tls_ocsp_dir: /var/lib/varnish-ocsp

Default: /var/lib/varnish-ocsp

Directory where Varnish keeps a cache of OCSP responses.

tls_ocsp_fetch_limit integer

varnish:
  params:
    tls_ocsp_fetch_limit: 10

Default: 10

Upper limit for the number of OCSP responses fetched in parallel.

tls_ocsp_force_ttl number

varnish:
  params:
    tls_ocsp_force_ttl: 0

Default: 0

Force TTL for OCSP responses.

tls_ocsp_refresh_ratio number

varnish:
  params:
    tls_ocsp_refresh_ratio: 0.5

Default: 0.5

Specifies when to refresh an OCSP response given as a ratio of its lifetime.

transit_buffer string

varnish:
  params:
    transit_buffer: 0

Default: 0

The default prefetch amount used during a single private transaction.

uncacheable_ttl number

varnish:
  params:
    uncacheable_ttl: 120

Default: 120

The TTL assigned to uncacheable objects by the built-in VCL.

vcc_err_unref boolean

varnish:
  params:
    vcc_err_unref: false

Default: false

Unreferenced VCL objects are errors, not warnings.

vcl_cooldown number

varnish:
  params:
    vcl_cooldown: 600

Default: 600

How long a VCL is kept warm after being replaced as the active VCL.

vsl_buffer string

varnish:
  params:
    vsl_buffer: 4k

Default: 4k

VSL buffer size.

vsl_mask string

varnish:
  params:
    vsl_mask: -Debug,-ObjProtocol,-ObjStatus,-ObjReason,-ObjHeader,-VCL_trace,-ExpKill,-WorkThread,-Hash,-VfpAcct,-H2RxHdr,-H2RxBody,-H2TxHdr,-H2TxBody

Default: -Debug,-ObjProtocol,-ObjStatus,-ObjReason,-ObjHeader,-VCL_trace,-ExpKill,-WorkThread,-Hash,-VfpAcct,-H2RxHdr,-H2RxBody,-H2TxHdr,-H2TxBody

VSL tag mask.

vsl_reclen integer

varnish:
  params:
    vsl_reclen: 4084b

Default: 4084b

Maximum number of bytes in SHM log record.

vsl_space string

varnish:
  params:
    vsl_space: 80M

Default: 80M

The amount of space to allocate for the VSL fifo buffer.

vsm_free_cooldown number

varnish:
  params:
    vsm_free_cooldown: 60

Default: 60

How long VSM memory is kept warm after a deallocation.

vsm_publish_interval number

varnish:
  params:
    vsm_publish_interval: 1

Default: 1

The minimum interval that new VSM segment indexes are published.

vst_space string

varnish:
  params:
    vst_space: 10M

Default: 10M

The amount of space to allocate for a VST memory segment.

workspace_backend string

varnish:
  params:
    workspace_backend: 64k

Default: 64k

Bytes of HTTP protocol workspace for backend HTTP req/resp.

workspace_client string

varnish:
  params:
    workspace_client: 64k

Default: 64k

Bytes of HTTP protocol workspace for clients HTTP req/resp.

workspace_session string

varnish:
  params:
    workspace_session: 0.75k

Default: 0.75k

Bytes of session workspace.

workspace_thread string

varnish:
  params:
    workspace_thread: 2k

Default: 2k

Bytes of auxiliary workspace per thread.

ykey_mem_digest_split_bits integer

varnish:
  params:
    ykey_mem_digest_split_bits: 4

Default: 4

Number of bits used to select a tree set based on the ykey hash for non-persisted objects.

ykey_mem_tree_split integer

varnish:
  params:
    ykey_mem_tree_split: 7

Default: 7

Number of trees to spread ephemeral objects with the same hash across.

OpenTelemetry

Configuration for the integrated OpenTelemetry exporter. A recognizable service_name should be set, and at least one endpoint. All other parameters are optional.

otel:
  service_name: example
  metrics:
    endpoint: http://prometheus:9090/api/v1/otlp/v1/metrics

service_name string

otel:
  service_name: example

Default: varnish-supervisor

Service name for metrics identification

metrics

Metrics exporter configuration.

enabled boolean

otel:
  metrics:
    enabled: false

Default: true

Enable metrics export.

endpoint string

otel:
  metrics:
    endpoint: http://prometheus:9090/api/v1/otlp/v1/metrics

OpenTelemetry endpoint URL for metrics export.

protocol string

otel:
  metrics:
    protocol: grpc

Default: http/protobuf

Options:

  • http/protobuf
  • grpc
  • http/json

Protocol to use when exporting metrics.

export_interval integer

otel:
  metrics:
    export_interval: 30

Default: 60

Metrics export interval in seconds.

tracing

Note: Orca Premium feature

enabled boolean

otel:
  tracing:
    enabled: true

Default: false

Enable tracing export. Requires the vmod-otel license addon.

endpoint string

otel:
  tracing:
    endpoint: http://prometheus:9090/api/v1/otlp/v1/metrics

OpenTelemetry endpoint URL for trace export.

protocol string

otel:
  tracing:
    protocol: grpc

Default: http/protobuf

Options:

  • http/protobuf
  • grpc
  • http/json

Protocol to use when exporting traces.

export_interval integer

otel:
  tracing:
    export_interval: 5

Default: 5

Tracing batch export interval in seconds.

sampler string

otel:
  tracing:
    sampler: parentbased_traceidratio

Default: always_on

Trace sampler type. Controls how traces are sampled.

Options:

  • always_on: Sample all traces.
  • always_off: Sample no traces.
  • traceidratio: Sample a fraction of traces based on sampler_arg.
  • parentbased_always_on: Follow parent span’s sampling decision, default to always on.
  • parentbased_always_off: Follow parent span’s sampling decision, default to always off.
  • parentbased_traceidratio: Follow parent span’s sampling decision, default to ratio-based.

sampler_arg number

otel:
  tracing:
    sampler: traceidratio
    sampler_arg: 0.1

Default: 1.0

Sampler argument for ratio-based samplers. A value between 0.0 (sample nothing) and 1.0 (sample everything).

logs

Logs exporter configuration.

enabled boolean

otel:
  logs:
    enabled: true

Default: true (when endpoint is configured)

Enable logs export.

endpoint string

otel:
  logs:
    endpoint: http://loki:3100/otlp/v1/logs

OTLP endpoint URL for logs export. When empty, logs export is disabled.

protocol string

otel:
  logs:
    protocol: grpc

Default: http/protobuf

Options:

  • http/protobuf
  • grpc
  • http/json

Protocol to use when exporting logs.

export_interval integer

otel:
  logs:
    export_interval: 10

Default: 5

Logs export interval in seconds.

ACME

Configuration for the ACME automated TLS certificate resolver.

acme:
  email: foo@example.com
  domains:
  - example.com

email string

acme:
  email: foo@example.com

Email address for ACME account registration.

Type: String

domains list

acme:
  domains:
  - example.com

Domains to obtain certificates for.

Type: List of strings

ca_server string

acme:
  ca_server: staging

Default: production

ACME CA server URL.

Options:

http_port integer

acme:
  http_port: 6080

Default: 80

Port for ACME HTTP-01 challenge server.

renew_before_days integer

acme:
  renew_before_days: `15`

Default: 30

Days before expiry to renew certificates.

fetch_timeout_sec integer

acme:
  fetch_timeout_sec: 150

Default: 300

Timeout for initial certificate fetching.

Supervisor

supervisor:
  log_level: error

Configuration for the Varnish Supervisor itself.

log_output string

supervisor:
  log_output: stderr

Default: stdout

Where to write Supervisor (control plane) logs.

Options:

  • stdout: Log to stdout
  • stderr: Log to stderr
  • discard: Discard logs
  • file path: Write logs to a file

log_level string

supervisor:
  log_level: warn

Default: stdout

Change the log level of the Supervisor (control plane) logs.

Options:

  • info: Log at info level.
  • warn: Log at warning level.
  • error: Log at error level.
  • debug: Log at debug level.

work_dir string

supervisor:
  work_dir: /tmp/varnish-supervisor

Default: /var/lib/varnish-supervisor

The working directory for storing state, logs, and other runtime files.

License

Configuration for the Premium License. The license unlocks Orca Premium functionality not available in the free version.

license:
  file: /etc/varnish-supervisor/license.lic

text string

license:
  text: |
        <License>

Provide a license as text in the configuration.

file string

license:
  file: /etc/varnish-supervisor/license.lic

Provide a path to the license.