Server

Servers are the inbound side of vey-proxy. They accept client traffic, perform protocol-specific frontend work, and hand the request to an escaper.

Each server configuration item is a map with two required keys:

  • name, which defines the server name

  • type, which selects the concrete server type and therefore determines how the remaining keys are interpreted

The pages below cover frontend listeners, protocol proxies, and local chaining ports.

Servers

Common Keys

These keys are shared by many server types and cover the common frontend behavior.

name

required, type: metric node name

The server name.

type

required, type: str

The server type.

escaper

required, type: metric node name

The escaper used by this server.

If the referenced escaper does not exist in the configuration, a default DummyDeny escaper is used.

auditor

optional, type: metric node name

The auditor used by this server.

If the referenced auditor does not exist in the configuration, a default auditor is used.

user_group

optional, type: metric node name

The user group used for authentication and authorization.

If the referenced user group does not exist in the configuration, a default empty user group is used.

default: no auth enabled

shared_logger

optional, type: ascii

Makes this server use a logger that runs on a shared thread.

default: not set

listen_in_worker

optional, type: bool

Controls whether this server listens in every worker runtime when workers are enabled.

The number of listener instances then matches the worker count.

default: false

tls_server

optional, type: rustls server config

Enables TLS on the listening socket and configures the TLS parameters.

default: disabled

tls_ticketer

optional, type: tls ticketer

Configures a remote rolling TLS ticketer.

default: not set

Added in version 1.9.9.

ingress_network_filter

optional, type: ingress network acl rule

Ingress network filter for client addresses.

The address used here is always the interpreted client address. For directly listening servers, that is the raw socket peer address. For servers behind a PROXY Protocol-aware front end, that is the address carried in the PROXY Protocol message.

default: not set

dst_host_filter_set

optional, type: dst host acl rule set

Destination-host filter for each request.

Note

This won’t limit the Host header in http protocol.

default: not set

dst_port_filter

optional, type: exact port acl rule

Destination-port filter for each request.

default: not set

tcp_sock_speed_limit

optional, type: tcp socket speed limit

Per-TCP-socket speed limit.

default: no limit

tcp_conn_speed_limit

deprecated

Changed in version 1.11.8: deprecated, use tcp_sock_speed_limit instead

tcp_conn_limit

deprecated

Changed in version 1.11.8: deprecated, use tcp_sock_speed_limit instead

conn_limit

deprecated

Changed in version 1.11.8: deprecated, use tcp_sock_speed_limit instead

udp_sock_speed_limit

optional, type: udp socket speed limit

Per-UDP-socket speed limit.

default: no limit

udp_relay_speed_limit

deprecated

Changed in version 1.11.8: deprecated, use udp_sock_speed_limit instead

udp_relay_limit

deprecated

Changed in version 1.11.8: deprecated, use udp_sock_speed_limit instead

relay_limit

deprecated

Changed in version 1.11.8: deprecated, use udp_sock_speed_limit instead

tcp_copy_buffer_size

optional, type: humanize usize

Buffer size used for internal TCP copy operations.

default: 16K, minimal: 4K

tcp_copy_yield_size

optional, type: humanize usize

Set the yield out size for the internal copy task.

default: 1M, minimal: 256K

udp_relay_packet_size

optional, type: humanize usize

Set the udp packet size for udp relay.

default: 4K, maximum: 16K

udp_relay_yield_count

optional, type: usize

Set the yield out count of packets for the internal relay task.

default: 1024, maximum: 256

Added in version 1.13.3.

udp_relay_batch_count

optional, type: usize

Set the batch recvmsg / sendmsg packet count.

default: 8

Added in version 1.13.3.

udp_relay_underlying_buffer_size

optional, type: humanize usize

Set the underlying buffer size when we need to parsing UDP packets from a underlying layer.

default: 16K, or at least 8 * udp_relay_packet_size

Added in version 1.13.5.

tcp_misc_opts

optional, type: tcp misc sock opts

Set misc tcp socket options on accepted tcp sockets.

default: not set, nodelay is default enabled

udp_misc_opts

optional, type: udp misc sock opts

Set misc udp socket options on created udp sockets.

default: not set

task_idle_check_duration

deprecated

Changed in version 1.11.3: change default value from 5min to 60s

Changed in version 1.13.0: deprecated, use task_idle_check_interval instead

task_idle_check_interval

optional, type: humanize duration

Set the idle check duration for task. The value will be up bound to seconds.

default: 60s, max: 30min, min: 2s

Added in version 1.13.0.

task_idle_max_count

optional, type: usize

The task will be closed if the idle check return IDLE the times as this value.

Note

The value set at user side will overwrite this.

default: 5

Changed in version 1.11.3: change default value from 1 to 5

flush_task_log_on_created

optional, type: bool

Log when task get created.

default: false

Added in version 1.11.0.

flush_task_log_on_connected

optional, type: bool

Log when upstream connected.

default: false

Added in version 1.11.0.

task_log_flush_interval

optional, type: humanize duration

Enable periodic task log and set the flush interval.

Note

There will be no periodic task log if protocol inspection is enabled, as intercept and inspect logs will be available in this case.

default: not set

Added in version 1.11.0.

extra_metrics_tags

optional, type: static metrics tags

Set extra metrics tags that should be added to server stats and user stats already with server tags added.

default: not set