records.config

The records.config file (by default, located in /usr/local/etc/trafficserver/) is a list of configurable variables used by the Traffic Server software. Many of the variables in records.config are set automatically when you set configuration options with traffic_ctl config set. After you modify records.config, run the command traffic_ctl config reload to apply the changes.

Note: The configuration directory, containing the SYSCONFDIR value specified at build time relative to the installation prefix, contains Traffic Server configuration files. The $TS_ROOT environment variable can be used alter the installation prefix at run time. The directory must allow read/write access for configuration reloads.

Format

Each variable has the following format:

CONFIG variable_name DATATYPE variable_value

Data Type

A variable’s type is defined by the DATATYPE and must be one of:

Type

Description

FLOAT

Floating point, expressed as a decimal number without units or exponents.

INT

Integers, expressed with or without unit prefixes (as described below).

STRING

String of characters up to the first newline. No quoting necessary.

Values

The variable_value must conform to the variable’s type. For STRING, this is simply any character data until the first newline.

For integer (INT) variables, values are expressed as any normal integer, e.g. 32768. They can also be expressed using more human readable values using standard unit prefixes, e.g. 32K. The following prefixes are supported for all INT type configurations:

Prefix

Description

Equivalent in Bytes

K

Kilobytes

1,024 bytes

M

Megabytes

1,048,576 bytes (10242)

G

Gigabytes

1,073,741,824 bytes (10243)

T

Terabytes

1,099,511,627,776 bytes (10244)

Floating point variables (FLOAT) must be expressed as a regular decimal number. Unit prefixes are not supported, nor are alternate notations (scientific, exponent, etc.).

Additional Attributes

Deprecated

A variable marked as Deprecated is still functional but should be avoided as it may be removed in a future release without warning.

Reloadable

A variable marked as Reloadable can be updated via the command:

traffic_ctl config reload

This updates configuration parameters without restarting Traffic Server or interrupting the processing of requests.

Overridable

A variable marked as Overridable can be changed on a per-remap basis using plugins (like the Configuration Remap Plugin), affecting operations within the current transaction only.

Examples

In the following example, the variable proxy.config.proxy_name is a STRING datatype with the value my_server. This means that the name of the Traffic Server proxy is my_server.

CONFIG proxy.config.proxy_name STRING my_server

If the server name should be that_server the line would be

CONFIG proxy.config.proxy_name STRING that_server

In the following example, the variable proxy.config.arm.enabled is a yes/no flag. A value of 0 (zero) disables the option; a value of 1 enables the option.

CONFIG proxy.config.arm.enabled INT 0

In the following example, the variable sets the time to wait for a DNS response to 10 seconds.

CONFIG proxy.config.hostdb.lookup_timeout INT 10

The last examples configures a 64GB RAM cache, using a human readable prefix.

CONFIG proxy.config.cache.ram_cache.size INT 64G

Environment Overrides

Every records.config configuration variable can be overridden by a corresponding environment variable. This can be useful in situations where you need a static records.config but still want to tweak one or two settings. The override variable is formed by converting the records.config variable name to upper case, and replacing any dot separators with an underscore.

Overriding a variable from the environment is permanent and will not be affected by future configuration changes made in records.config or applied with traffic_ctl.

For example, we could override the proxy.config.product_company variable like this:

$ PROXY_CONFIG_PRODUCT_COMPANY=example traffic_manager &
$ traffic_ctl config get proxy.config.product_company

Configuration Variables

The following list describes the configuration variables available in the records.config file.

System Variables

proxy.config.product_company
Scope
CONFIG
Type
STRING
Default
Apache Software Foundation

The name of the organization developing Traffic Server.

proxy.config.product_vendor
Scope
CONFIG
Type
STRING
Default
Apache

The name of the vendor providing Traffic Server.

proxy.config.product_name
Scope
CONFIG
Type
STRING
Default
|TS|

The name of the product.

proxy.config.proxy_name
Scope
CONFIG
Type
STRING
Default
build_machine
Reloadable
Yes

The name of the Traffic Server node.

proxy.config.bin_path
Scope
CONFIG
Type
STRING
Default
bin

The location of the Traffic Server bin directory.

proxy.config.proxy_binary
Scope
CONFIG
Type
STRING
Default
traffic_server

The name of the executable that runs the traffic_server process.

If you want to set Environment Variables for traffic_server process, use a wrapper script like below.

CONFIG proxy.config.proxy_binary STRING start_traffic_server.sh
#!/bin/sh
export ASAN_OPTIONS=detect_leaks=1
/opt/ats/bin/traffic_server "$@"
proxy.config.proxy_binary_opts
Scope
CONFIG
Type
STRING
Default
-M

The command-line options for starting Traffic Server.

proxy.config.manager_binary
Scope
CONFIG
Type
STRING
Default
traffic_manager

The name of the executable that runs the traffic_manager process.

proxy.config.env_prep
Scope
CONFIG
Type
STRING
Default
*NONE*

The script executed before the traffic_manager process spawns the traffic_server process.

proxy.config.syslog_facility
Scope
CONFIG
Type
STRING
Default
LOG_DAEMON

The facility used to record system log files. Refer to Understanding Traffic Server Logs for more in-depth discussion of the contents and interpretations of log files.

proxy.config.output.logfile
Scope
CONFIG
Type
STRING
Default
traffic.out

This is used for log rolling configuration so Traffic Server knows the path of the output file that should be rolled. This configuration takes the name of the file receiving traffic_server and traffic_manager process output that is set via the --bind_stdout and --bind_stderr command-line options. proxy.config.output.logfile is used only to identify the name of the output file for log rolling purposes and does not override the values set via --bind_stdout and --bind_stderr.

If a filename is passed to this option, then it will be interpreted relative to proxy.config.log.logfile_dir. If a different location is desired, then pass an absolute path to this configuration.

proxy.config.output.logfile_perm
Scope
CONFIG
Type
STRING
Default
rw-r–r–

The log file permissions for the file receiving Traffic Server output, the path of which is configured via the --bind_stdout and --bind_stderr command-line options. The standard UNIX file permissions are used (owner, group, other). Permissible values are:

Value

Description

-

No permissions.

r

Read permission.

w

Write permission.

x

Execute permission.

Permissions are subject to the umask settings for the Traffic Server process. This means that a umask setting of 002 will not allow write permission for others, even if specified in the configuration file. Permissions for existing log files are not changed when the configuration is modified.

proxy.config.output.logfile.rolling_enabled
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Specifies how the output log is rolled. You can specify the following values:

Value

Description

0

Disables output log rolling.

1

Enables output log rolling at specific intervals (specified with the proxy.config.output.logfile.rolling_interval_sec variable). The clock starts ticking on Traffic Server boot.

2

Enables output log rolling when the output log reaches a specific size (specified with proxy.config.output.logfile.rolling_size_mb).

3

Enables output log rolling at specific intervals or when the output log reaches a specific size (whichever occurs first).

proxy.config.output.logfile.rolling_interval_sec
Scope
CONFIG
Type
INT
Default
3600
Units
seconds
Reloadable
Yes

Specifies how often the output log is rolled, in seconds. The timer starts on Traffic Server startup.

proxy.config.output.logfile.rolling_size_mb
Scope
CONFIG
Type
INT
Default
100
Units
megabytes
Reloadable
Yes

Specifies at what size to roll the output log at.

proxy.config.output.logfile.rolling_min_count
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Specifies the minimum count of rolled output logs to keep. This value will be used to decide the order of auto-deletion (if enabled). A default value of 0 means auto-deletion will try to keep output logs as much as possible. See Log Rotation and Retention for guidance.

Thread Variables

proxy.config.exec_thread.autoconfig
Scope
CONFIG
Type
INT
Default
1

When enabled (the default, 1), Traffic Server scales threads according to the available CPU cores. See the config option below.

proxy.config.exec_thread.autoconfig.scale
Scope
CONFIG
Type
FLOAT
Default
1.0

Factor by which Traffic Server scales the number of threads. The multiplier is usually the number of available CPU cores. By default this is scaling factor is 1.0.

proxy.config.exec_thread.limit
Scope
CONFIG
Type
INT
Default
2

The number of threads Traffic Server will create if proxy.config.exec_thread.autoconfig is set to 0, otherwise this option is ignored.

proxy.config.exec_thread.listen
Scope
CONFIG
Type
INT
Default
0

If enabled (1) all the exec_threads listen for incoming connections. proxy.config.accept_threads should be disabled to enable this variable.

proxy.config.accept_threads
Scope
CONFIG
Type
INT
Default
1

The number of accept threads. If disabled (0), then accepts will be done in each of the worker threads.

accept_threads

exec_thread.listen

Effect

0

0

All worker threads accept new connections and share listen fd.

1

0

New connections are accepted on a dedicated accept thread and distributed to worker threads in round robin fashion.

0

1

All worker threads listen on the same port using SO_REUSEPORT. Each thread has its own listen fd and new connections are accepted on all the threads.

By default, proxy.config.accept_threads is set to 1 and proxy.config.exec_thread.listen is set to 0.

proxy.config.thread.default.stacksize
Scope
CONFIG
Type
INT
Default
1048576

Default thread stack size, in bytes, for all threads (default is 1 MB).

proxy.config.exec_thread.affinity
Scope
CONFIG
Type
INT
Default
1

Bind threads to specific processing units.

Value

Effect

0

Assign threads to machine.

1

Assign threads to NUMA nodes [default].

2

Assign threads to sockets.

3

Assign threads to cores.

4

Assign threads to processing units.

Note

This option only has an affect when Traffic Server has been compiled with --enable-hwloc.

proxy.config.system.file_max_pct
Scope
CONFIG
Type
FLOAT
Default
0.9

Set the maximum number of file handles for the traffic_server process as a percentage of the fs.file-max proc value in Linux. The default is 90%.

proxy.config.crash_log_helper
Scope
CONFIG
Type
STRING
Default
traffic_crashlog

This option directs traffic_server to spawn a crash log helper at startup. The value should be the path to an executable program. If the path is not absolute, it is located relative to configured bin directory. Any user-provided program specified here must behave in a fashion compatible with traffic_crashlog. Specifically, it must implement the traffic_crashlog --wait behavior.

This setting not reloadable because the helper must be spawned before traffic_server drops privilege. If this variable is set to NULL, no helper will be spawned.

proxy.config.restart.active_client_threshold
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

This setting specifies the number of active client connections for use by traffic_ctl server restart --drain.

proxy.config.restart.stop_listening
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

This option specifies whether Traffic Server should close listening sockets while shutting down gracefully.

Value

Description

0

Listening sockets will be kept open.

1

Listening sockets will be closed when Traffic Server starts shutting down.

proxy.config.stop.shutdown_timeout
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

The shutdown timeout(in seconds) to apply when stopping Traffic Server, in which ATS can initiate graceful shutdowns. In order to effect graceful shutdown, the value specified should be greater than 0. Value of 0 will not effect an abrupt shutdown. Abrupt shutdowns can be achieved with out specifying –drain; (traffic_ctl server stop /restart). Stopping Traffic Server here means sending traffic_server a signal either by bin/trafficserver stop or kill.

proxy.config.thread.max_heartbeat_mseconds
Scope
CONFIG
Type
INT
Default
60
Units
milliseconds

Set the maximum heartbeat in milliseconds for threads, ranges from 0 to 1000.

This controls the maximum amount of time the event loop will wait for I/O activity. On a system that is not busy, this option can be set to a higher value to decrease the spin around overhead. If experiencing unexpected delays, setting a lower value should improve the situation. Note that this setting should only be used by expert system tuners, and will not be beneficial with random fiddling.

Network

proxy.config.net.connections_throttle
Scope
CONFIG
Type
INT
Default
30000

The total number of client and origin server connections that the server can handle simultaneously. This is in fact the max number of file descriptors that the traffic_server process can have open at any given time. Roughly 10% of these connections are reserved for origin server connections, i.e. from the default, only ~27,000 client connections can be handled. This should be tuned according to your memory size, and expected work load. If this is set to 0, the throttling logic is disabled.

proxy.config.net.max_connections_in
Scope
CONFIG
Type
INT
Default
30000

The total number of client requests that Traffic Server can handle simultaneously. This should be tuned according to your memory size, and expected work load (network, cpu etc). This limit includes both idle (keep alive) connections and active requests that Traffic Server can handle at any given instant. The delta between proxy.config.net.max_connections_in and proxy.config.net.max_requests_in is the amount of maximum idle (keepalive) connections Traffic Server will maintain.

proxy.config.net.max_requests_in
Scope
CONFIG
Type
INT
Default
0

The total number of concurrent requests or active client connections that the Traffic Server can handle simultaneously. This should be tuned according to your memory size, and expected work load (network, cpu etc). When set to 0, active request tracking is disabled and max requests has no separate limit and the total connections follow proxy.config.net.connections_throttle

proxy.config.net.default_inactivity_timeout
Scope
CONFIG
Type
INT
Default
86400
Reloadable
Yes

The connection inactivity timeout (in seconds) to apply when Traffic Server detects that no inactivity timeout has been applied by the HTTP state machine. When this timeout is applied, the proxy.process.net.default_inactivity_timeout_applied metric is incremented.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.net.inactivity_check_frequency
Scope
CONFIG
Type
INT
Default
1

How frequent (in seconds) to check for inactive connections. If you deal with a lot of concurrent connections, increasing this setting can reduce pressure on the system.

proxy.local.incoming_ip_to_bind
Scope
LOCAL
Type
STRING
Default
0.0.0.0 [::]

Controls the global default IP addresses to which to bind proxy server ports. The value is a space separated list of IP addresses, one per supported IP address family (currently IPv4 and IPv6).

Unless explicitly specified in proxy.config.http.server_ports, the server port will be bound to one of these addresses, selected by IP address family. The built in default is any address. This is used if no address for a family is specified. This setting is useful if most or all server ports should be bound to the same address.

Note

This is ignored for inbound transparent server ports because they must be able to accept connections on arbitrary IP addresses.

Example

Set the global default for IPv4 to 192.168.101.18 and leave the global default for IPv6 as any address:

LOCAL proxy.local.incoming_ip_to_bind STRING 192.168.101.18

Example

Set the global default for IPv4 to 191.68.101.18 and the global default for IPv6 to fc07:192:168:101::17:

LOCAL proxy.local.incoming_ip_to_bind STRING 192.168.101.18 [fc07:192:168:101::17]
proxy.local.outgoing_ip_to_bind
Scope
LOCAL
Type
STRING
Default
0.0.0.0 [::]

This controls the global default for the local IP address for outbound connections to origin servers. The value is a list of space separated IP addresses, one per supported IP address family (currently IPv4 and IPv6).

Unless explicitly specified in proxy.config.http.server_ports, one of these addresses, selected by IP address family, will be used as the local address for outbound connections. This setting is useful if most or all of the server ports should use the same outbound IP addresses.

Note

This is ignored for outbound transparent ports as the local outbound address will be the same as the client local address.

Example

Set the default local outbound IP address for IPv4 connections to 192.168.101.18.:

LOCAL proxy.local.outgoing_ip_to_bind STRING 192.168.101.18

Example

Set the default local outbound IP address to 192.168.101.17 for IPv4 and fc07:192:168:101::17 for IPv6.:

LOCAL proxy.local.outgoing_ip_to_bind STRING 192.168.101.17 [fc07:192:168:101::17]
proxy.config.net.event_period
Scope
CONFIG
Type
INT
Default
10

How often, in milli-seconds, to schedule IO event processing. This is unlikely to be necessary to tune, and we discourage setting it to a value smaller than 10ms (on Linux).

proxy.config.net.accept_period
Scope
CONFIG
Type
INT
Default
10

How often, in milli-seconds, to schedule accept() processing. This is unlikely to be necessary to tune, and we discourage setting it to a value smaller than 10ms (on Linux).

proxy.config.net.retry_delay
Scope
CONFIG
Type
INT
Default
10
Reloadable
Yes

How long to wait until we retry various events that would otherwise block the network processing threads (e.g. locks). We discourage setting this to a value smaller than 10ms (on Linux).

proxy.config.net.throttle_delay
Scope
CONFIG
Type
INT
Default
50
Reloadable
Yes

When we trigger a throttling scenario, this how long our accept() are delayed.

Local Manager

proxy.node.config.manager_log_filename
Scope
CONFIG
Type
STRING
Default
manager.log

The name of the file to which traffic_manager logs will be emitted.

If this is set to stdout or stderr, then all traffic_manager logging will go to the stdout or stderr stream, respectively.

proxy.config.admin.user_id
Scope
CONFIG
Type
STRING
Default
nobody

Designates the non-privileged account to run the traffic_server process as, which also has the effect of setting ownership of configuration and log files.

If the user_id is prefixed with pound character (#), the remainder of the string is considered to be a numeric user identifier. If the value is set to #-1, Traffic Server will not change the user during startup.

Important

Attempting to set this option to root or #0 is now forbidden, as a measure to increase security. Doing so will cause a fatal failure upon startup in traffic_server. However, there are two ways to bypass this restriction:

  • Specify -DBIG_SECURITY_HOLE in CXXFLAGS during compilation.

  • Set the user_id=#-1 and start trafficserver as root.

proxy.config.admin.api.restricted
Scope
CONFIG
Type
INT
Default
0

This setting specifies whether the management API should be restricted to root processes. If this is set to 0, then on platforms that support passing process credentials, non-root processes will be allowed to make read-only management API calls. Any management API calls that modify server state (eg. setting a configuration variable) will still be restricted to root processes.

This setting is not reloadable, since it is must be applied when traffic_manager initializes.

proxy.node.config.manager_exponential_sleep_ceiling
Scope
CONFIG
Type
INT
Default
60

In case of traffic_manager is unable to start traffic_server, this setting specifies the maximum amount of seconds that the traffic_manager process should wait until it tries again to restart traffic_server. In case of traffic_manager failing to start traffic_server, it will retry exponentially until it reaches the ceiling time.

proxy.node.config.manager_retry_cap
Scope
CONFIG
Type
INT
Default
5

This setting specifies the number of times that traffic_manager will retry to restart traffic_server once the maximum ceiling time is reached.

Note

If set to 0, no cap will take place.

Alarm Configuration

proxy.config.alarm.abs_path
Scope
CONFIG
Type
STRING
Default
NULL
Reloadable
Yes

The absolute path to the directory containing the alarm script. If this is not set, the script will be located relative to proxy.config.bin_path.

proxy.config.alarm.script_runtime
Scope
CONFIG
Type
INT
Default
5
Reloadable
Yes

The number of seconds that Traffic Server allows the alarm script to run before aborting it.

HTTP Engine

proxy.config.http.server_ports
Scope
CONFIG
Type
STRING
Default
8080 8080:ipv6

Ports used for proxying HTTP traffic.

This is a list, separated by space or comma, of port descriptors. Each descriptor is a sequence of keywords and values separated by colons. Not all keywords have values, those that do are specifically noted. Keywords with values can have an optional = character separating the keyword and value. The case of keywords is ignored. The order of keywords is irrelevant but unspecified results may occur if incompatible options are used (noted below). Options without values are idempotent. Options with values use the last (right most) value specified, except for ip-out as detailed later.

Quick reference chart:

Name

Note

Definition

number

Required

The local port.

blind

Blind (CONNECT) port.

compress

Not Implemented

Compressed.

ipv4

Default

Bind to IPv4 address family.

ipv6

Bind to IPv6 address family.

ip-in

Value

Local inbound IP address.

ip-out

Value

Local outbound IP address.

ip-resolve

Value

IP address resolution style.

proto

Value

List of supported session protocols.

pp

Enable Proxy Protocol.

ssl

SSL terminated.

quic

QUIC terminated.

tr-full

Fully transparent (inbound and outbound)

tr-in

Inbound transparent.

tr-out

Outbound transparent.

tr-pass

Pass through enabled.

mptcp

Multipath TCP.

number

Local IP port to bind. This is the port to which ATS clients will connect.

blind

Accept only the CONNECT method on this port.

Not compatible with: tr-in, ssl and quic.

compress

Compress the connection. Retained only by inertia, should be considered “not implemented”.

ipv4

Use IPv4. This is the default and is included primarily for completeness. This forced if the ip-in option is used with an IPv4 address.

ipv6

Use IPv6. This is forced if the ip-in option is used with an IPv6 address.

ssl

Require SSL termination for inbound connections. SSL must be configured for this option to provide a functional server port.

Not compatible with: blind and quic.

quic

Require QUIC termination for inbound connections. SSL must be configured for this option to provide a functional server port. THIS IS EXPERIMENTAL SUPPORT AND NOT READY FOR PRODUCTION USE.

Not compatible with: blind and ssl.

proto

Specify the session level protocols supported. These should be separated by semi-colons. For TLS proxy ports the default value is all available protocols. For non-TLS proxy ports the default is HTTP only. HTTP/3 is only available on QUIC ports.

pp

Enables Proxy Protocol on the port. If Proxy Protocol is enabled on the port, all incoming requests must be prefaced with the PROXY header. See Proxy Protocol for more details on how to configure this option properly.

tr-full

Fully transparent. This is a convenience option and is identical to specifying both tr-in and tr-out.

Not compatible with: Any option not compatible with tr-in or tr-out.

tr-in

Inbound transparent. The proxy port will accept connections to any IP address on the port. To have IPv6 inbound transparent you must use this and the ipv6 option. This overrides proxy.local.incoming_ip_to_bind for this port.

Not compatible with: ip-in, blind

tr-out

Outbound transparent. If ATS connects to an origin server for a transaction on this port, it will use the client’s address as its local address. This overrides proxy.local.outgoing_ip_to_bind for this port.

Not compatible with: ip-out, ip-resolve

tr-pass

Transparent pass through. This option is useful only for inbound transparent proxy ports. If the parsing of the expected HTTP header fails, then the transaction is switched to a blind tunnel instead of generating an error response to the client. It effectively enables proxy.config.http.use_client_target_addr for the transaction as there is no other place to obtain the origin server address.

ip-in

Set the local IP address for the port. This is the address to which clients will connect. This forces the IP address family for the port. The ipv4 or ipv6 can be used but it is optional and is an error for it to disagree with the IP address family of this value. An IPv6 address must be enclosed in square brackets. If this option is omitted proxy.local.incoming_ip_to_bind is used.

Not compatible with: tr-in.

ip-out

Set the local IP address for outbound connections. This is the address used by ATS locally when it connects to an origin server for transactions on this port. If this is omitted proxy.local.outgoing_ip_to_bind is used.

This option can used multiple times, once for each IP address family. The address used is selected by the IP address family of the origin server address.

Not compatible with: tr-out.

ip-resolve

Set the host resolution style for transactions on this proxy port.

Not compatible with: tr-out - this option requires a value of client;none which is forced and should not be explicitly specified.

mptcp

Enable Multipath TCP on this proxy port.

Requires custom Linux kernel available at https://multipath-tcp.org.

Example

Listen on port 80 on any address for IPv4 and IPv6.:

80 80:ipv6

Example

Listen transparently on any IPv4 address on port 8080, and transparently on port 8080 on local address fc01:10:10:1::1 (which implies ipv6).:

IPv4:tr-FULL:8080 TR-full:IP-in=[fc02:10:10:1::1]:8080

Example

Listen on port 8080 for IPv6, fully transparent. Set up an SSL port on 443. These ports will use the IP address from proxy.local.incoming_ip_to_bind. Listen on IP address 192.168.17.1, port 80, IPv4, and connect to origin servers using the local address 10.10.10.1 for IPv4 and fc01:10:10:1::1 for IPv6.:

8080:ipv6:tr-full 443:ssl ip-in=192.168.17.1:80:ip-out=[fc01:10:10:1::1]:ip-out=10.10.10.1

Example

Listen on port 9090 for TLS enabled HTTP/2 or HTTP connections, accept no other session protocols.:

9090:proto=http2;http:ssl

Example

Listen on port 9090 for TLS disabled HTTP/2 and enabled HTTP connections, accept no other session protocols.:

9090:proto=http:ssl

Example

Listen on port 4433 for QUIC connections.:

4433:quic
proxy.config.http.connect_ports
Scope
CONFIG
Type
STRING
Default
443

The range of origin server ports that can be used for tunneling via CONNECT.

Traffic Server allows tunnels only to the specified ports. Supports both wildcards (*) and ranges (e.g. 0-1023).

Note

These are the ports on the origin server, not Traffic Server proxy ports.

proxy.config.http.forward_connect_method
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

The default, Traffic Server behavior for handling a CONNECT method request is to establish a tunnel to the requested destination. This configuration alters the behavior so that Traffic Server forwards the CONNECT method to the next hop, and establishes the tunnel after receiving a positive response. This behavior is useful in a proxy hierarchy, and is equivalent to setting proxy.local.http.parent_proxy.disable_connect_tunneling to 0 when parent proxying is enabled.

proxy.config.http.insert_request_via_str
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

Set how the Via field is handled on a request to the origin server.

Value

Effect

0

Do not modify or set this Via header.

1

Add the basic protocol and proxy identifier.

2

Add basic transaction codes.

3

Add detailed transaction codes.

4

Add full user agent connection protocol tags.

Note

The Via transaction codes can be decoded with the Via Decoder Ring.

proxy.config.http.request_via_str
Scope
CONFIG
Type
STRING
Default
ApacheTrafficServer/${PACKAGE_VERSION}
Reloadable
Yes
Overridable
Yes

Set the server and version string in the Via request header to the origin server which is inserted when the value of proxy.config.http.insert_request_via_str is not 0. Note that the actual default value is defined with "ApacheTrafficServer/" PACKAGE_VERSION in a C++ source code, and you must write such as ApacheTrafficServer/6.0.0 if you really set a value with the version in records.config file. If you want to hide the version, you can set this value to ApacheTrafficServer.

proxy.config.http.insert_response_via_str
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

Set how the Via field is handled on the response to the client.

Value

Effect

0

Do not modify or set this Via header.

1

Add the basic protocol and proxy identifier.

2

Add basic transaction codes.

3

Add detailed transaction codes.

4

Add full upstream connection protocol tags.

Note

The Via transaction code can be decoded with the Via Decoder Ring.

proxy.config.http.response_via_str
Scope
CONFIG
Type
STRING
Default
ApacheTrafficServer/${PACKAGE_VERSION}
Reloadable
Yes
Overridable
Yes

Set the server and version string in the Via response header to the client which is inserted when the value of proxy.config.http.insert_response_via_str is not 0. Note that the actual default value is defined with "ApacheTrafficServer/" PACKAGE_VERSION in a C++ source code, and you must write such as ApacheTrafficServer/6.0.0 if you really set a value with the version in records.config file. If you want to hide the version, you can set this value to ApacheTrafficServer.

proxy.config.http.send_100_continue_response
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

You can specify one of the following:

Value

Description

0

Traffic Server will buffer the request until the post body has been received and then send the request to the origin server.

1

Immediately return a 100 Continue from Traffic Server without waiting for the post body.

proxy.config.http.response_server_enabled
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

You can specify one of the following:

Value

Description

0

No Server header is added to the response.

1

The Server header is added according to proxy.config.http.response_server_str.

2

The Server header is added only if the response from origin does not have one already.

proxy.config.http.response_server_str
Scope
CONFIG
Type
STRING
Default
ATS/${PACKAGE_VERSION}
Reloadable
Yes
Overridable
Yes

The Server string that Traffic Server will insert in a response header (if requested, see above). Note that the actual default value is defined with "ATS/" PACKAGE_VERSION in the C++ source, and you must write such as ATS/6.0.0 if you really set a value with the version in records.config. If you want to hide the version, you can set this value to ATS.

proxy.config.http.insert_age_in_response
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

This option specifies whether Traffic Server should insert an Age header in the response. The value is the cache’s estimate of the amount of time since the response was generated or revalidated by the origin server.

Value

Description

0

No Age header is added.

1

Age header is added.

proxy.config.http.chunking_enabled
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

Specifies whether Traffic Server can generate a chunked response:

Value

Description

0

Never respond with chunked encoding.

1

Always respond with chunked encoding.

2

Generate a chunked response if the origin server has previously returned HTTP/1.1.

3

Generate a chunked response if the client request is HTTP/1.1 and the origin server has previously returned HTTP/1.1.

proxy.config.http.chunking.size
Scope
CONFIG
Type
INT
Default
4096
Overridable
Yes

If chunked transfer encoding is enabled with proxy.config.http.chunking_enabled, and the conditions specified by that option’s setting are met by the current request, this option determines the size of the chunks, in bytes, to use when sending content to an HTTP/1.1 client.

proxy.config.http.send_http11_requests
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

Specifies when and how Traffic Server uses HTTP/1.1 to communicate with the origin server.

Value

Description

0

Never use HTTP/1.1.

1

Always use HTTP/1.1.

2

Use HTTP/1.1 with origin connections only if the server has previously returned HTTP/1.1.

3

If the client request is HTTP/1.1 and the origin server has previously returned HTTP/1.1, then use HTTP/1.1 for origin server connections.

Note

If proxy.config.http.use_client_target_addr is set to 1, then options 2 and 3 for this configuration variable cause the proxy to use the client HTTP version for upstream requests.

proxy.config.http.auth_server_session_private
Scope
CONFIG
Type
INT
Default
1
Overridable
Yes

If enabled (1) anytime a request contains a Authorization, Proxy-Authorization, or Www-Authenticate header the connection will be closed and not reused. This marks the connection as private. When disabled (0) the connection will be available for reuse.

proxy.config.http.server_session_sharing.match
Scope
CONFIG
Type
STRING
Default
both
Overridable
Yes

Enable and set the ability to re-use server connections across client connections. Multiple values can be specified when separated by commas with no white spaces. Valid values are:

Value

Description

none

Do not match and do not re-use server sessions.

ip

Re-use server sessions, checking only that the IP address and port of the origin server matches.

host

Re-use server sessions, checking that the fully qualified domain name matches. In addition, if the session uses TLS, it also checks that the current transaction’s host header value matches the session’s SNI.

both

Equivalent to host,ip.

hostonly

Check that the fully qualified domain name matches.

sni

Check that the SNI of the session matches the SNI that would be used to create a new session. Only applicable for TLS sessions.

cert

Check that the certificate file name used for the server session matches the certificate file name that would be used for the new server session. Only applicable for TLS sessions.

The setting must contain at least one of ip, host, hostonly or both for session reuse to operate. The other values may be used for greater control with TLS session reuse.

Note

Server sessions to different upstream ports never match even if the FQDN and IP address match.

Note

Upstream session tracking uses a similar set of options for matching sessions, but is set independently from session sharing.

proxy.config.http.server_session_sharing.pool
Scope
CONFIG
Type
STRING
Default
thread

Control the scope of server session re-use if it is enabled by proxy.config.http.server_session_sharing.match. Valid values are:

Value

Description

global

Re-use sessions from a global pool of all server sessions.

thread

Re-use sessions from a per-thread pool.

hybrid

Try to work as a global pool, but release server sessions to the per-thread pool if there is lock contention on the global pool.

Setting proxy.config.http.server_session_sharing.pool to global can reduce the number of connections to origin for some traffic loads. However, if many execute threads are active, the thread contention on the global pool can reduce the lifetime of connections to origin and reduce effective origin connection reuse.

For a hybrid pool, the operation starts as the global pool, but sessons are returned to the local thread pool if the global pool lock is not acquired rather than just closing the origin connection as is the case in standard global mode.

proxy.config.http.attach_server_session_to_client
Scope
CONFIG
Type
INT
Default
0
Overridable
Yes

Control the re-use of an server session by a user agent (client) session. Currently only applies to user agents using HTTP/1.0 or HTTP/1.1. For other HTTP versions, the origin connection is always returned to the session sharing pool or closed.

If a user agent performs more than one HTTP transaction on its connection to Traffic Server a server session must be obtained for the second (and subsequent) transaction as for the first. This settings affects how that server session is selected.

If this setting is 0 then after the first transaction the server session for that transaction is released to the server pool (if any). When a server session is needed for subsequent transactions one is selected from the server pool or created if there is no suitable server session in the pool.

If this setting is not 0 then the current server session for the user agent session is “sticky”. It will be preferred to any other server session (either from the pool or newly created). The server session will be detached from the user agent session only if it cannot be used for the transaction. This is determined by the proxy.config.http.server_session_sharing.match value. If the server session matches the next transaction according to this setting then it will be used, otherwise it will be released to the pool and a different session selected or created.

proxy.config.http.max_proxy_cycles
Scope
CONFIG
Type
INT
Default
0
Overridable
Yes

Control the proxy cycle detection function in the following manner –

If this setting is 0, then next hop is self IP address and port detection is active.

In addition, the proxy cycle detection using the Via string will declare a cycle if the current cache appears one or more times in the Via string, i.e, > 0.

If this setting is 1 or more (N), then next hop is self IP address and port detection is inactive.

In addition, the proxy cycle detection using the Via string will declare a cycle if the current cache appears more than N times in the Via string, i.e., > N.

Examples:

If the setting is 0, then the second time a request enters a cache it will have its own machine identifier in the Via string once, so a cycle will be detected. So no cycles are allowed.

If the setting is 1, then the third time a request enters a cache it will have its own machine identifier in the Via string twice, so a cycle will be detected. So one cycle is allowed. The first cycle with two visits to the cache and one instance in the Via string is allowed. The second cycle with three visits to the cache and two instances in the Via string is not allowed.

This setting allows an edge cache peering arrangement where an edge cache may forward a request to a peer edge cache (possibly itself) a limited of times (usually once). Infinite loops are still detected when the cycle allowance is exceeded.

proxy.config.http.use_client_target_addr
Scope
CONFIG
Type
INT
Default
0

For fully transparent ports use the same origin server address as the client.

This option causes Traffic Server to avoid where possible doing DNS lookups in forward transparent proxy mode. The option is only effective if the following three conditions are true:

  • Traffic Server is in forward proxy mode.

  • The proxy port is inbound transparent.

  • The target URL has not been modified by either remapping or a plugin.

If any of these conditions are not true, then normal DNS processing is done for the connection.

There are three valid values.

Value

Description

0

Disables the feature.

1

Enables the feature with address verification. The proxy does the regular DNS processing. If the client-specified origin address is not in the set of addresses found by the proxy, the request continues to the client specified address, but the result is not cached.

2

Enables the feature with no address verification. No DNS processing is performed. The result is cached (if allowed otherwise). This option is vulnerable to cache poisoning if an incorrect Host header is specified, so this option should be used with extreme caution. See bug TS-2954 for details.

If all of these conditions are met, then the origin server IP address is retrieved from the original client connection, rather than through HostDB or DNS lookup. In effect, client DNS resolution is used instead of Traffic Server DNS.

This can be used to be a little more efficient (looking up the target once by the client rather than by both the client and Traffic Server) but the primary use is when client DNS resolution can differ from that of Traffic Server. Two known uses cases are:

  1. Embedded IP addresses in a protocol with DNS load sharing. In this case, even though Traffic Server and the client both make the same request to the same DNS resolver chain, they may get different origin server addresses. If the address is embedded in the protocol then the overall exchange will fail. One current example is Microsoft Windows update, which presumably embeds the address as a security measure.

  2. The client has access to local DNS zone information which is not available to Traffic Server. There are corporate nets with local DNS information for internal servers which, by design, is not propagated outside the core corporate network. Depending a network topology it can be the case that Traffic Server can access the servers by IP address but cannot resolve such addresses by name. In such as case the client supplied target address must be used.

This solution must be considered interim. In the longer term, it should be possible to arrange for much finer grained control of DNS lookup so that wildcard domain can be set to use Traffic Server or client resolution. In both known use cases, marking specific domains as client determined (rather than a single global switch) would suffice. It is possible to do this crudely with this flag by enabling it and then use identity URL mappings to re-disable it for specific domains.

proxy.config.http.keep_alive_enabled_in
Scope
CONFIG
Type
INT
Default
1
Overridable
Yes

Enables (1) or disables (0) incoming keep-alive connections.

proxy.config.http.keep_alive_enabled_out
Scope
CONFIG
Type
INT
Default
1
Overridable
Yes

Enables (1) or disables (0) outgoing keep-alive connections.

Note

Enabling keep-alive does not automatically enable purging of keep-alive requests when nearing the connection limit, that is controlled by proxy.config.http.server_max_connections.

proxy.config.http.keep_alive_post_out
Scope
CONFIG
Type
INT
Default
1
Overridable
Yes

Controls whether new POST requests re-use keep-alive sessions (1) or create new connections per request (0).

proxy.config.http.disallow_post_100_continue
Scope
CONFIG
Type
INT
Default
0

Allows you to return a 405 Method Not Supported with Posts also containing an Expect: 100-continue.

When a Post w/ Expect: 100-continue is blocked the stat proxy.process.http.disallowed_post_100_continue will be incremented.

proxy.config.http.default_buffer_size
Scope
CONFIG
Type
INT
Default
8
Reloadable
Yes
Overridable
Yes

Configures the default buffer size, in bytes, to allocate for incoming request bodies which lack a Content-length header.

proxy.config.http.default_buffer_water_mark
Scope
CONFIG
Type
INT
Default
32768
Reloadable
Yes
Overridable
Yes

Number of bytes Traffic Server is allowed to read ahead of the client from the origin. Note that when Read While Write settings are in place, this setting will apply to the first client to request the object, regardless if subsequent, simultaneous clients of that object can read faster. The buffered bytes will consume memory while waiting for the client to consume them.

While this setting is reloadable, dramatic changes can cause bigger memory usage than expected and is thus not recommended.

proxy.config.http.request_buffer_enabled
Scope
CONFIG
Type
INT
Default
0
Overridable
Yes

This enables buffering the content for incoming POST requests. If enabled no outbound connection is made until the entire POST request has been buffered. If enabled, proxy.config.http.post_copy_size needs to be set to the maximum of the post body size allowed, otherwise, the post would fail.

proxy.config.http.request_line_max_size
Scope
CONFIG
Type
INT
Default
65535

Controls the maximum size, in bytes, of an HTTP Request Line in requests. Requests with a request line exceeding this size will be treated as invalid and rejected by the proxy. Note that the HTTP request line typically includes HTTP method, request target and HTTP version string except when the request is made using absolute URI in which case the request line may also include the request scheme and domain name.

proxy.config.http.header_field_max_size
Scope
CONFIG
Type
INT
Default
131070

Controls the maximum size, in bytes, of an HTTP header field in requests. Headers in a request with the sum of their name and value that exceed this size will cause the entire request to be treated as invalid and rejected by the proxy.

proxy.config.http.request_header_max_size
Scope
CONFIG
Type
INT
Default
131072

Controls the maximum size, in bytes, of an HTTP header in requests. Headers in a request which exceed this size will cause the entire request to be treated as invalid and rejected by the proxy.

proxy.config.http.response_header_max_size
Scope
CONFIG
Type
INT
Default
131072

Controls the maximum size, in bytes, of headers in HTTP responses from the proxy. Any responses with a header exceeding this limit will be treated as invalid and a client error will be returned instead.

proxy.config.http.global_user_agent_header
Scope
CONFIG
Type
STRING
Default
null
Overridable
Yes

An arbitrary string value that, if set, will be used to replace any request User-Agent header.

proxy.config.http.strict_uri_parsing
Scope
CONFIG
Type
INT
Default
0

Takes a value between 0 and 2. 0 disables strict_uri_parsing. Any character can appears in the URI. 1 causes Traffic Server to return 400 Bad Request if client’s request URI includes character which is not RFC 3986 compliant. 2 directs Traffic Server to reject the clients request if it contains whitespace or non-printable characters.

proxy.config.http.errors.log_error_pages
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes

Enables (1) or disables (0) the logging of responses to bad requests to the error logging destination. Disabling this option prevents error responses (such as 403s) from appearing in the error logs. Any HTTP response status codes equal to, or higher, than the minimum code defined by TS_HTTP_STATUS_BAD_REQUEST are affected by this setting.

Parent Proxy Configuration

proxy.config.http.parent_proxy.retry_time
Scope
CONFIG
Type
INT
Default
300
Reloadable
Yes
Overridable
Yes

The amount of time allowed between connection retries to a parent cache that is unavailable.

proxy.config.http.parent_proxy.max_trans_retries
Scope
CONFIG
Type
INT
Default
2

Limits the number of simultaneous transactions that may retry a parent once the parents retry_time has expired.

proxy.config.http.parent_proxy.fail_threshold
Scope
CONFIG
Type
INT
Default
10
Reloadable
Yes
Overridable
Yes

The number of times the connection to the parent cache can fail before Traffic Server considers the parent unavailable.

proxy.config.http.parent_proxy.total_connect_attempts
Scope
CONFIG
Type
INT
Default
4
Reloadable
Yes
Overridable
Yes

The total number of connection attempts for a specific transaction allowed to a parent cache before Traffic Server bypasses the parent or fails the request (depending on the go_direct option in the parent.config file). The number of parents tried is proxy.config.http.parent_proxy.fail_threshold / proxy.config.http.parent_proxy.total_connect_attempts

proxy.config.http.parent_proxy.per_parent_connect_attempts
Scope
CONFIG
Type
INT
Default
2
Reloadable
Yes
Overridable
Yes

The total number of connection attempts allowed per parent for a specific transaction, if multiple parents are used.

proxy.config.http.parent_proxy.mark_down_hostdb
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

Enables (1) or disables (0) marking parent proxies down in hostdb when a connection error is detected. Normally parent selection manages parent proxies and will mark them as unavailable as needed. But when parents are defined in dns with multiple ip addresses, it may be useful to mark the failing ip down in hostdb. In this case you would enable these updates.

proxy.config.http.forward.proxy_auth_to_parent
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

Configures Traffic Server to send proxy authentication headers on to the parent cache.

proxy.config.http.no_dns_just_forward_to_parent
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Don’t try to resolve DNS, forward all DNS requests to the parent. This is off (0) by default.

proxy.local.http.parent_proxy.disable_connect_tunneling
Scope
CONFIG
Type
INT
Default
0
proxy.config.http.parent_proxy.self_detect
Scope
CONFIG
Type
INT
Default
2

For each host that has been specified in a parent or secondary_parent list in the parent.config file, determine if the host is the same as the current host. Obvious examples include localhost and 127.0.0.1. If a match is found, take an action depending upon the value below.

Value

Description

0

Disables the feature by not checking for matches.

1

Remove the matching host from the list.

2

Mark the host down. This is the default.

HTTP Connection Timeouts

proxy.config.http.keep_alive_no_activity_timeout_in
Scope
CONFIG
Type
INT
Default
120
Reloadable
Yes
Overridable
Yes

Specifies how long Traffic Server keeps connections to clients open for a subsequent request after a transaction ends. A value of 0 will set proxy.config.net.default_inactivity_timeout as the timeout.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.http.keep_alive_no_activity_timeout_out
Scope
CONFIG
Type
INT
Default
120
Reloadable
Yes
Overridable
Yes

Specifies how long Traffic Server keeps connections to origin servers open for a subsequent transfer of data after a transaction ends. A value of 0 will set proxy.config.net.default_inactivity_timeout as the timeout.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.http.transaction_no_activity_timeout_in
Scope
CONFIG
Type
INT
Default
30
Reloadable
Yes
Overridable
Yes

Specifies how long Traffic Server keeps connections to clients open if a transaction stalls.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.http.transaction_no_activity_timeout_out
Scope
CONFIG
Type
INT
Default
30
Reloadable
Yes
Overridable
Yes

Specifies how long Traffic Server keeps connections to origin servers open if the transaction stalls.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.websocket.no_activity_timeout
Scope
CONFIG
Type
INT
Default
600
Reloadable
Yes
Overridable
Yes

Specifies how long Traffic Server keeps connections open if a websocket stalls.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.websocket.active_timeout
Scope
CONFIG
Type
INT
Default
3600
Reloadable
Yes
Overridable
Yes

The maximum amount of time Traffic Server keeps websocket connections open.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.http.transaction_active_timeout_in
Scope
CONFIG
Type
INT
Default
900
Reloadable
Yes
Overridable
Yes

The maximum amount of time Traffic Server can remain connected to a client. If the transfer to the client is not complete before this timeout expires, then Traffic Server closes the connection.

The value of 0 specifies that there is no timeout.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.http.transaction_active_timeout_out
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

The maximum amount of time Traffic Server waits for fulfillment of a connection request to an origin server. If Traffic Server does not complete the transfer to the origin server before this timeout expires, then Traffic Server terminates the connection request.

The default value of 0 specifies that there is no timeout.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.http.accept_no_activity_timeout
Scope
CONFIG
Type
INT
Default
120
Reloadable
Yes

The timeout interval in seconds before Traffic Server closes a connection that has no activity.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.http.background_fill_active_timeout
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

Specifies how long Traffic Server continues a background fill before giving up and dropping the origin server connection.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.http.background_fill_completed_threshold
Scope
CONFIG
Type
FLOAT
Default
0.0
Reloadable
Yes
Overridable
Yes

The proportion of total document size already transferred when a client aborts at which the proxy continues fetching the document from the origin server to get it into the cache (a background fill).

HTTP Redirection

proxy.config.http.number_of_redirections
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

This setting determines the maximum number of times Trafficserver does a redirect follow location on receiving a 3XX Redirect response for a given client request.

Note

When proxy.config.http.number_of_redirections is set to a positive value and Traffic Server has previously cached a 3XX Redirect response, the cached response will continue to be refreshed and returned until the response is no longer in the cache.

Note

In previous versions proxy.config.http.redirection_enabled had to be set to 1 before this setting was evaluated. Now setting proxy.config.http.number_of_redirections to a value greater than zero is sufficient to cause Traffic Server to follow redirects.

proxy.config.http.redirect_host_no_port
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes

This setting enables Trafficserver to not include the port in the Host header in the redirect follow request for default/standard ports (e.g. 80 for HTTP and 443 for HTTPS). Note that the port is still included in the Host header if it’s non-default.

proxy.config.http.redirect_use_orig_cache_key
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

This setting enables Trafficserver to allow using original request cache key (for example, set using a TS API) during a 3xx redirect follow. The default behavior (0) is to use the URL specified by Location header in the 3xx response as the cache key.

proxy.config.http.post_copy_size
Scope
CONFIG
Type
INT
Default
2048
Reloadable
Yes

This setting determines the maximum size in bytes of uploaded content to be buffered for HTTP methods such as POST and PUT.

proxy.config.http.redirect.actions
Scope
CONFIG
Type
STRING
Default
routable:follow
Reloadable
Yes

This setting determines how redirects should be handled. The setting consists of a comma-separated list of key-value pairs, where the keys are named IP address ranges and the values are actions.

The following are valid keys:

Key

Description

self

Addresses of the host’s interfaces

loopback

IPv4 127.0.0.0/8 and IPv6 ::1

private

IPv4 10.0.0.0/8 100.64.0.0/10 172.16.0.0/12 192.168.0.0/16 and IPv6 fc00::/7

multicast

IPv4 224.0.0.0/4 and IPv6 ff00::/8

linklocal

IPv4 169.254.0.0/16 and IPv6 fe80::/10

routable

All publicly routable addresses

default

All address ranges not configured specifically

The following are valid values:

Value

Description

return

Do not process the redirect, send it as the proxy response.

reject

Do not process the redirect, send a 403 as the proxy response.

follow

Internally follow the redirect up to proxy.config.http.number_of_redirections. Use this setting with caution!

Warning

Following a redirect to other than routable addresses can be dangerous, as it allows the controller of an origin to arrange a probe the Traffic Server host. Enabling these redirects makes Traffic Server open to third party attacks and probing and therefore should be considered only in known safe environments.

For example, a setting of loopback:reject,private:reject,routable:follow,default:return would send 403 as the proxy response to loopback and private addresses, routable addresses would be followed up to proxy.config.http.number_of_redirections, and redirects to all other ranges will be sent as the proxy response.

The action for self has the highest priority when an address would match multiple keys, and the action for default has the lowest priority. Other keys represent disjoint sets of addresses that will not conflict. If duplicate keys are present in the setting, the right-most key-value pair is used.

The default value is routable:follow, which means “follow routable redirects, return all other redirects”. Note that proxy.config.http.number_of_redirections must be positive also, otherwise redirects will be returned rather than followed.

Origin Server Connect Attempts

proxy.config.http.connect_attempts_max_retries
Scope
CONFIG
Type
INT
Default
3
Reloadable
Yes
Overridable
Yes

The maximum number of connection retries Traffic Server can make when the origin server is not responding. Each retry attempt lasts for proxy.config.http.connect_attempts_timeout seconds. Once the maximum number of retries is reached, the origin is marked dead (as controlled by proxy.config.http.connect.dead.policy. After this, the setting proxy.config.http.connect_attempts_max_retries_dead_server is used to limit the number of retry attempts to the known dead origin.

proxy.config.http.connect_attempts_max_retries_dead_server
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

Maximum number of connection attempts Traffic Server can make while an origin is marked dead per request. Typically this value is smaller than proxy.config.http.connect_attempts_max_retries so an error is returned to the client faster and also to reduce the load on the dead origin. The timeout interval proxy.config.http.connect_attempts_timeout in seconds is used with this setting.

proxy.config.http.connect.dead.policy
Scope
CONFIG
Type
INT
Default
2
Overridable
Yes

Controls what origin server connection failures contribute to marking a server dead. When set to 2, any connection failure during the TCP and TLS handshakes will contribute to marking the server dead. When set to 1, only TCP handshake failures will contribute to marking a server dead. When set to 0, no connection failures will be used towards marking a server dead.

proxy.config.http.server_max_connections
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Limits the number of socket connections across all origin servers to the value specified. To disable, set to zero (0).

This value is used in determining when and if to prune active origin sessions. Without this value set, connections to origins can consume all the way up to proxy.config.net.connections_throttle connections, which in turn can starve incoming requests from available connections.

proxy.config.http.per_server.connection.max
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

Set a limit for the number of concurrent connections to an upstream server group. A value of 0 disables checking. If a transaction attempts to connect to a group which already has the maximum number of concurrent connections a 503 (HTTP_STATUS_SERVICE_UNAVAILABLE) error response is sent to the user agent. To configure

Upstream server group definition

See proxy.config.http.per_server.connection.match.

Frequency of alerts

See proxy.config.http.per_server.connection.alert_delay.

proxy.config.http.per_server.connection.match
Scope
CONFIG
Type
STRING
Default
both
Reloadable
Yes
Overridable
Yes

Control the definition of an upstream server group for proxy.config.http.per_server.connection.max. This must be one of the following keywords.

ip

Group by IP address. Each IP address is a group.

port

Group by IP address and port. Each distinct IP address and port pair is a group.

host

Group by host name. The host name is the post remap FQDN used to resolve the upstream address.

both

Group by IP address, port, and host name. Each distinct combination is a group.

To disable upstream server grouping, set proxy.config.http.per_server.connection.max to 0.

Note

This setting is independent of the setting for upstream session sharing matching.

proxy.config.http.per_server.connection.alert_delay
Scope
CONFIG
Type
INT
Default
60
Units
seconds
Reloadable
Yes

Throttle alerts per upstream server group to be no more often than this many seconds. Summary data is provided per alert to allow log scrubbing to generate accurate data.

proxy.config.http.per_server.connection.min
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

Set a target for the minimum number of active connections to an upstream server group. When an outbound connection is in keep alive state and the inactivity timer expires, if there are fewer than this many connections in the group a new connection the timer is reset instead of closing the connection. Useful when the origin supports keep-alive, removing the time needed to set up a new connection from the next request at the expense of added (inactive) connections.

proxy.config.http.connect_attempts_rr_retries
Scope
CONFIG
Type
INT
Default
3
Reloadable
Yes
Overridable
Yes

The maximum number of failed connection attempts allowed before a round-robin entry is marked as ‘down’ if a server has round-robin DNS entries.

proxy.config.http.connect_attempts_timeout
Scope
CONFIG
Type
INT
Default
30
Reloadable
Yes
Overridable
Yes

The timeout value (in seconds) for time to set up a connection to the origin. After the connection is established the value of proxy.config.http.transaction_no_activity_timeout_out is used to established timeouts on the data over the connection.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.http.post.check.content_length.enabled
Scope
CONFIG
Type
INT
Default
1

Enables (1) or disables (0) checking the Content-Length: Header for a POST request.

proxy.config.http.down_server.cache_time
Scope
CONFIG
Type
INT
Default
60
Reloadable
Yes
Overridable
Yes

Specifies how long (in seconds) Traffic Server remembers that an origin server was unreachable.

proxy.config.http.uncacheable_requests_bypass_parent
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

When enabled (1), Traffic Server bypasses the parent proxy for a request that is not cacheable.

Congestion Control

proxy.config.http.flow_control.enabled
Scope
CONFIG
Type
INT
Default
0
Overridable
Yes

Transaction buffering / flow control is enabled if this is set to a non-zero value. Otherwise no flow control is done.

proxy.config.http.flow_control.high_water
Scope
CONFIG
Type
INT
Default
0
Units
bytes
Overridable
Yes

The high water mark for transaction buffer control. External source I/O is halted when the total buffer space in use by the transaction exceeds this value.

proxy.config.http.flow_control.low_water
Scope
CONFIG
Type
INT
Default
0
Units
bytes
Overridable
Yes

The low water mark for transaction buffer control. External source I/O is resumed when the total buffer space in use by the transaction is no more than this value.

proxy.config.http.websocket.max_number_of_connections
Scope
CONFIG
Type
INT
Default
-1
Reloadable
Yes

When enabled >= (0), Traffic Server will enforce a maximum number of simultaneous websocket connections.

Negative Response Caching

proxy.config.http.negative_caching_enabled
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

When enabled (1), Traffic Server caches negative responses (such as 404 Not Found) when a requested page does not exist. The next time a client requests the same page, Traffic Server serves the negative response directly from cache.

When disabled (0), Traffic Server will only cache the response if the response has Cache-Control headers.

The following negative responses are cached by Traffic Server by default:

HTTP Response Code

Description

204

No Content

305

Use Proxy

403

Forbidden

404

Not Found

414

URI Too Long

500

Internal Server Error

501

Not Implemented

502

Bad Gateway

503

Service Unavailable

504

Gateway Timeout

The cache lifetime for objects cached from this setting is controlled via proxy.config.http.negative_caching_lifetime.

proxy.config.http.negative_caching_lifetime
Scope
CONFIG
Type
INT
Default
1800
Reloadable
Yes
Overridable
Yes

How long (in seconds) Traffic Server keeps the negative responses valid in cache. This value only affects negative responses that do NOT have explicit Expires: or Cache-Control: lifetimes set by the server.

proxy.config.http.negative_caching_list
Scope
CONFIG
Type
STRING
Default
204 305 403 404 414 500 501 502 503 504
Reloadable
Yes

The HTTP status code for negative caching. Default values are mentioned above. The unwanted status codes can be taken out from the list. Other status codes can be added. The variable is a list but parsed as STRING.

proxy.config.http.negative_revalidating_enabled
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

Negative revalidating allows Traffic Server to return stale content if revalidation to the origin fails due to network or HTTP errors. If it is enabled, rather than caching the negative response, the current stale content is preserved and served. Note this is considered only on a revalidation of already cached content. A revalidation failure means a connection failure or a 50x response code. When considering replying with a stale response in these negative revalidating circumstances, Traffic Server will respect the proxy.config.http.cache.max_stale_age configuration and will not use a cached response older than max_stale_age seconds.

A value of 0 disables serving stale content and a value of 1 enables keeping and serving stale content if revalidation fails.

proxy.config.http.negative_revalidating_lifetime
Scope
CONFIG
Type
INT
Default
1800

When replying with a stale cached response in negative revalidating circumstances (see proxy.config.http.negative_revalidating_enabled), Traffic Server includes an Expires: HTTP header field in the cached response with a future time so that upstream caches will not try to revalidate their respective stale objects. This configuration specifies how many seconds in the future Traffic Server will calculate the value of this inserted Expires: header field.

There is a limitation to this method to be aware of: per specification (see IETF RFC 7234, section 4.2.1), Cache-Control: response directives take precedence over the Expires: header field when determining object freshness. Thus if the cached response contains either a max-age or an s-maxage Cache-Control: response directive, then these directives would take precedence for the upstream caches over the inserted Expires: field, rendering the Expires: header ineffective in specifying the configured freshness lifetime.

Finally, be aware that the only way this configuration is used is as input into calculating the value of these inserted Expires: header fields. This configuration does not direct Traffic Server behavior with regard to whether it considers a stale object to be fresh enough to serve out of cache when revalidation fails. As mentioned above in proxy.config.http.negative_revalidating_enabled, proxy.config.http.cache.max_stale_age is used for that determination.

This configuration defaults to 1,800 seconds (30 minutes).

Proxy User Variables

proxy.config.http.anonymize_remove_from
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

When enabled (1), Traffic Server removes the From header to protect the privacy of your users.

proxy.config.http.anonymize_remove_referer
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

When enabled (1), Traffic Server removes the Referrer header to protect the privacy of your site and users.

proxy.config.http.anonymize_remove_user_agent
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

When enabled (1), Traffic Server removes the User-agent header to protect the privacy of your site and users.

Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

When enabled (1), Traffic Server removes the Cookie header to protect the privacy of your site and users.

proxy.config.http.anonymize_remove_client_ip
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

When enabled (1), Traffic Server removes Client-IP headers for more privacy.

proxy.config.http.insert_client_ip
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

Specifies whether Traffic Server inserts Client-IP headers to retain the client IP address:

Value

Description

0

Don’t insert the Client-ip header

1

Insert the Client-ip header, but only if the UA did not send one

2

Always insert the Client-ip header

proxy.config.http.anonymize_other_header_list
Scope
CONFIG
Type
STRING
Default
NULL
Reloadable
Yes

Comma separated list of headers Traffic Server should remove from outgoing requests.

proxy.config.http.insert_squid_x_forwarded_for
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

When enabled (1), Traffic Server adds the client IP address to the X-Forwarded-For header.

proxy.config.http.insert_forwarded
Scope
CONFIG
Type
STRING
Default
none
Reloadable
Yes
Overridable
Yes

The default value (none) means that Traffic Server does not insert or append information to any Forwarded header (described in IETF RFC 7239) in the request message. To put information into a Forwarded header in the request, the value of this variable must be a list of the Forwarded parameters to be inserted.

Parameter

Value of parameter place in outgoing Forwarded header

for

Client IP address

by=ip

Proxy IP address

by=unknown

The literal string unknown

by=servername

Proxy server name

by=uuid

Server UUID prefixed with _

proto

Protocol of incoming request

host

The host specified in the incoming request

connection=compact

Connection with basic transaction codes.

connection=std

Connection with detailed transaction codes.

connection=full

Full user agent connection protocol tags

Each parameter in the list must be separated by | or :. For example, for|by=uuid|proto is a valid value for this variable. Note that the connection parameter is a non-standard extension to RFC 7239. Also note that, while Traffic Server allows multiple by parameters for the same proxy, this is prohibited by RFC 7239. Currently, for the host parameter to provide the original host from the incoming client request, proxy.config.url_remap.pristine_host_hdr must be enabled.

proxy.config.http.proxy_protocol_allowlist
Scope
CONFIG
Type
STRING
Default
```<ip list>```

This defines a allowlist of server IPs that are trusted to provide connections with Proxy Protocol information. This is a comma delimited list of IP addresses. Addressed may be listed individually, in a range separated by a dash or by using CIDR notation.

Example Effect

10.0.2.123

A single IP Address.

10.0.3.1-10.0.3.254

A range of IP address.

10.0.4.0/24

A range of IP address specified by CIDR notation.

Important

If Proxy Protocol is enabled on the port, but this directive is not defined any server may initiate a connection with Proxy Protocol information. See proxy.config.http.server_ports for information on how to enable Proxy Protocol on a port.

See Proxy Protocol for more discussion on how Traffic Server transforms the Forwarded: header.

proxy.config.http.proxy_protocol_out
Scope
CONFIG
Type
INT
Default
``-1``
Reloadable
Yes
Overridable
Yes

Set the behavior of outbound PROXY Protocol.

Value

Description

-1

Disable (default)

0

Forward received PROXY protocol to the next hop

1

Send client information in PROXY protocol version 1

2

Send client information in PROXY protocol version 2

proxy.config.http.normalize_ae
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

Specifies normalization, if any, of Accept-Encoding: headers.

Value

Description

0

No normalization.

1

Accept-Encoding: gzip (if the header has gzip or x-gzip with any q) OR blank (for any header that does not include gzip)

2

Accept-Encoding: br if the header has br (with any q) ELSE normalize as for value 1

3

Accept-Encoding: br, gzip (if the header has br and gzip (with any q for either) then br, gzip) ELSE normalize as for value 2

This is useful for minimizing cached alternates of documents (e.g. gzip, deflate vs. deflate, gzip). Enabling this option is recommended if your origin servers use no encodings other than gzip or br (Brotli).

Security

proxy.config.http.push_method_enabled
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Enables (1) or disables (0) the HTTP PUSH option, which allows you to deliver content directly to the cache without a user request.

Important

If you enable this option, then you must also specify a filtering rule in the ip_allow.yaml file to allow only certain machines to push content into the cache.

proxy.config.http.max_post_size
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

This feature is disabled by default with a value of (0), any positive value will limit the size of post bodies. If a request is received with a post body larger than this limit the response will be terminated with 413 - Request Entity Too Large and logged accordingly.

proxy.config.http.allow_multi_range
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

This option allows the administrator to configure different behavior and handling of requests with multiple ranges in the Range header.

Value

Description

0

Do not allow multiple ranges, effectively ignoring the Range header

1

Allows multiple ranges. This can be potentially dangerous since well formed requests can cause excessive resource consumption on the server.

2

Similar to 0, except return a 416 error code and no response body.

proxy.config.http.host_sni_policy
Scope
CONFIG
Type
INT
Default
2

This option controls how host header and SNI name mismatches are handled. Mismatches may result in SNI-based policies defined in sni.yaml being avoided. For example, foo.com may be the fqdn value in sni.yaml which defines that client certificates are required. The user could specify bar.com as the SNI to avoid the policy requiring the client certificate but specify foo.com as the HTTP host header to still access the same object.

Therefore, if a host header would have triggered a SNI policy, it is possible that the user is trying to bypass a SNI policy if the host header and SNI values do not match.

If this setting is 0, no checking is performed. If this setting is 1 or 2, the host header and SNI values are compared if the host header value would have triggered a SNI policy. If there is a mismatch and the value is 1, a warning is generated but the transaction is allowed to proceed. If the value is 2 and there is a mismatch, a warning is generated and a status 403 is returned.

Note that SNI and hostname consistency checking is not performed on all connections indiscriminately, even if this global proxy.config.http.host_sni_policy is set to a value of 1 or 2. It is only performed for connections to hosts specifying verify_client and/or ip_allow policies in sni.yaml. That is, the SNI and hostname mismatch check is only performed if a relevant security policy for the SNI is set in sni.yaml. The proxy.config.http.host_sni_policy records.config value is used as the default value if either of these policies is set in the corresponding sni.yaml file entry and the sni.yaml entry does not override this value via a host_sni_policy attribute action.

Cache Control

proxy.config.cache.enable_read_while_writer
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes

Specifies when to enable the ability to read a cached object while another connection is completing the write to cache for that same object. The goal here is to avoid multiple origin connections for the same cacheable object upon a cache miss. The possible values of this config are:

Value

Description

0

Never read while writing.

1

Always read while writing.

2

Always read while writing, but allow non-cached Range requests through to the origin server.

The 2 option is useful to avoid delaying requests which can not easily be satisfied by the partially written response.

Several other configuration values need to be set for this to be usable. See Reducing Origin Server Requests (Avoiding the Thundering Herd).

proxy.config.cache.read_while_writer.max_retries
Scope
CONFIG
Type
INT
Default
10
Reloadable
Yes

Specifies how many retries trafficserver attempts to trigger read_while_writer on failing to obtain the write VC mutex or until the first fragment is downloaded for the object being downloaded. The retry duration is specified using the setting proxy.config.cache.read_while_writer_retry.delay

proxy.config.cache.read_while_writer_retry.delay
Scope
CONFIG
Type
INT
Default
50
Reloadable
Yes

Specifies the delay in msec, trafficserver waits to reattempt read_while_writer on failing to obtain the write VC mutex or until the first fragment is downloaded for the object being downloaded. Note that trafficserver implements a progressive delay in reattempting, by doubling the configured duration from the third reattempt onwards.

proxy.config.cache.force_sector_size
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Forces the use of a specific hardware sector size, e.g. 4096, for all disks.

SSDs and “advanced format” drives claim a sector size of 512; however, it is safe to force a higher size than the hardware supports natively as we count atomicity in 512 byte increments.

4096-sized drives formatted for Windows will have partitions aligned on 63 512-byte sector boundaries, so they will be unaligned. There are workarounds, but you need to do some research on your particular drive. Some drives have a one-time option to switch the partition boundary, while others might require reformatting or repartitioning.

To be safe in Linux, you could just use the entire drive: /dev/sdb instead of /dev/sdb1 and Traffic Server will do the right thing. Misaligned partitions on Linux are auto-detected.

For example: If /sys/block/sda/sda1/alignment_offset is non-zero, ATS will offset reads/writes to that disk by that alignment. If Linux knows about any existing partition misalignments, ATS will compensate.

Partitions formatted to support hardware sector size of more than 512 (e.g. 4096) will result in all objects stored in the cache to be integral multiples of 4096 bytes, which will result in some waste for small files.

proxy.config.http.cache.http
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

Enables (1) or disables (0) caching of HTTP requests.

proxy.config.http.cache.post_method
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

Enables (1) or disables (0) caching of HTTP POST requests.

proxy.config.http.cache.generation
Scope
CONFIG
Type
INT
Default
-1
Reloadable
Yes
Overridable
Yes

If set to a value other than -1, the value if this configuration option is combined with the cache key at cache lookup time. Changing this value has the effect of an instantaneous, zero-cost cache purge since it will cause all subsequent cache keys to change. Since this is an overridable configuration, it can be used to purge the entire cache, or just a specific remap.config rule.

proxy.config.http.doc_in_cache_skip_dns
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

When enabled (1), do not perform origin server DNS resolution if a fresh copy of the requested document is available in the cache. This setting has no effect if HTTP caching is disabled or if there are IP based ACLs configured.

Note that plugins, particularly authorization plugins, which use the TS_HTTP_OS_DNS_HOOK hook may require this configuration variable to be disabled (0) in order to function properly. This will ensure that the hook will be evaluated and plugin execution will occur even when there is a fresh copy of the requested object in the cache (which would normally allow the DNS lookup to be skipped, thus eliminating the hook evaluation).

The downside is that the performance gain by skipping otherwise unnecessary DNS lookups is lost. Because the variable is overridable, you may retain this performance benefit for portions of your cache which do not require the use of TS_HTTP_OS_DNS_HOOK plugins, by ensuring that the setting is first disabled within only the relevant transactions. Refer to the documentation on Configuration Remap Plugin for more information.

proxy.config.http.cache.ignore_client_no_cache
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

When enabled (1), Traffic Server ignores client requests to bypass the cache.

proxy.config.http.cache.ims_on_client_no_cache
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

When enabled (1), Traffic Server issues a conditional request to the origin server if an incoming request has a No-Cache header.

proxy.config.http.cache.ignore_server_no_cache
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

When enabled (1), Traffic Server ignores origin server requests to bypass the cache.

proxy.config.http.cache.cache_responses_to_cookies
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

Specifies how cookies are cached:

Value

Description

0

Do not cache any responses to cookies.

1

Cache for any content-type.

2

Cache only for image types.

3

Cache for all but text content-types.

4

Cache for all but text content-types; except origin server response without Set-Cookie or with Cache-Control: public.

proxy.config.http.cache.ignore_authentication
Scope
CONFIG
Type
INT
Default
0
Overridable
Yes

When enabled (1), Traffic Server ignores WWW-Authentication headers in responses WWW-Authentication headers are removed and not cached.

proxy.config.http.cache.cache_urls_that_look_dynamic
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

Enables (1) or disables (0) caching of URLs that look dynamic, i.e.: URLs that end in .asp or contain a question mark (?), a semicolon (;), or cgi. For a full list, please refer to HttpTransact::url_looks_dynamic

proxy.config.http.cache.when_to_revalidate
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

Specifies when to revalidate content:

Value

Description

0

Use cache directives or heuristic (the default value).

1

Stale if heuristic.

2

Always stale (always revalidate).

3

Never stale.

4

Use cache directives or heuristic (0) unless the request has an If-Modified-Since header.

If the request contains the If-Modified-Since header, then Traffic Server always revalidates the cached content and uses the client’s If-Modified-Since header for the proxy request.

proxy.config.http.cache.required_headers
Scope
CONFIG
Type
INT
Default
2
Reloadable
Yes
Overridable
Yes

The type of headers required in a request for the request to be cacheable.

Value

Description

0

No headers required to make document cacheable.

1

Either the Last-Modified header, or an explicit lifetime header (Expires or Cache-Control: max-age) is required.

2

Explicit lifetime is required, from either Expires or Cache-Control: max-age.

proxy.config.http.cache.max_stale_age
Scope
CONFIG
Type
INT
Default
604800
Reloadable
Yes
Overridable
Yes

The maximum age in seconds allowed for a stale response before it cannot be cached.

proxy.config.http.cache.guaranteed_min_lifetime
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

Establishes a guaranteed minimum lifetime boundary for object freshness. Setting this to 0 (default) disables the feature.

proxy.config.http.cache.guaranteed_max_lifetime
Scope
CONFIG
Type
INT
Default
31536000
Reloadable
Yes
Overridable
Yes

Establishes a guaranteed maximum lifetime boundary for object freshness. Setting this to 0 disables the feature.

proxy.config.http.cache.range.lookup
Scope
CONFIG
Type
INT
Default
1
Overridable
Yes

When enabled (1), Traffic Server looks up range requests in the cache.

proxy.config.http.cache.range.write
Scope
CONFIG
Type
INT
Default
0
Overridable
Yes

When enabled (1), Traffic Server will attempt to write (lock) the URL to cache. This is rarely useful (at the moment), since it’ll only be able to write to cache if the origin has ignored the Range: header. For a use case where you know the origin will respond with a full (200) response, you can turn this on to allow it to be cached.

proxy.config.http.cache.ignore_accept_mismatch
Scope
CONFIG
Type
INT
Default
2
Reloadable
Yes
Overridable
Yes

When enabled with a value of 1, Traffic Server serves documents from cache with a Content-Type: header even if it does not match the Accept: header of the request. If set to 2 (default), this logic only happens in the absence of a Vary header in the cached response (which is the recommended and safe use).

Note

This option should only be enabled with 1 if you’re having problems with caching and you origin server doesn’t set the Vary header. Alternatively, if the origin is incorrectly setting Vary: Accept or doesn’t respond with 406 (Not Acceptable), you can also enable this configuration with a 1.

proxy.config.http.cache.ignore_accept_language_mismatch
Scope
CONFIG
Type
INT
Default
2
Reloadable
Yes
Overridable
Yes

When enabled with a value of 1, Traffic Server serves documents from cache with a Content-Language: header even if it does not match the Accept-Language: header of the request. If set to 2 (default), this logic only happens in the absence of a Vary header in the cached response (which is the recommended and safe use).

Note

This option should only be enabled with 1 if you’re having problems with caching and you origin server doesn’t set the Vary header. Alternatively, if the origin is incorrectly setting Vary: Accept-Language or doesn’t respond with 406 (Not Acceptable), you can also enable this configuration with a 1.

proxy.config.http.cache.ignore_accept_encoding_mismatch
Scope
CONFIG
Type
INT
Default
2
Reloadable
Yes
Overridable
Yes

When enabled with a value of 1, Traffic Server serves documents from cache with a Content-Encoding: header even if it does not match the Accept-Encoding: header of the request. If set to 2 (default), this logic only happens in the absence of a Vary header in the cached response (which is the recommended and safe use).

Note

This option should only be enabled with 1 if you’re having problems with caching and you origin server doesn’t set the Vary header. Alternatively, if the origin is incorrectly setting Vary: Accept-Encoding or doesn’t respond with 406 (Not Acceptable) you can also enable this configuration with a 1.

proxy.config.http.cache.ignore_accept_charset_mismatch
Scope
CONFIG
Type
INT
Default
2
Reloadable
Yes
Overridable
Yes

When enabled with a value of 1, Traffic Server serves documents from cache with a Content-Type: header even if it does not match the Accept-Charset: header of the request. If set to 2 (default), this logic only happens in the absence of a Vary header in the cached response (which is the recommended and safe use).

Note

This option should only be enabled with 1 if you’re having problems with caching and you origin server doesn’t set the Vary header. Alternatively, if the origin is incorrectly setting Vary: Accept-Charset or doesn’t respond with 406 (Not Acceptable), you can also enable this configuration with a 1.

proxy.config.http.cache.ignore_client_cc_max_age
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

When enabled (1), Traffic Server ignores any Cache-Control: max-age headers from the client. This technically violates the HTTP RFC, but avoids a problem where a client can forcefully invalidate a cached object.

proxy.config.cache.max_doc_size
Scope
CONFIG
Type
INT
Default
0

Specifies the maximum object size that will be cached. 0 is unlimited.

proxy.config.cache.min_average_object_size
Scope
CONFIG
Type
INT
Default
8000

Specifies the lower boundary of average object sizes in the cache and is used in determining the number of directory buckets to allocate for the in-memory cache directory.

proxy.config.cache.permit.pinning
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

When enabled (1), Traffic Server will keep certain HTTP objects in the cache for a certain time as specified in cache.config.

proxy.config.cache.hit_evacuate_percent
Scope
CONFIG
Type
INT
Default
0

The size of the region (as a percentage of the total content storage in a cache stripe) in front of the write cursor that constitutes a recent access hit for evacuating the accessed object.

When an object is accessed it can be marked for evacuation, that is to be copied over the write cursor and thereby preserved from being overwritten. This is done if it is no more than a specific number of bytes in front of the write cursor. The number of bytes is a percentage of the total number of bytes of content storage in the cache stripe where the object is stored and that percentage is set by this variable.

By default, the feature is off (set to 0).

proxy.config.cache.hit_evacuate_size_limit
Scope
CONFIG
Type
INT
Default
0
Units
bytes

Limit the size of objects that are hit evacuated.

Objects larger than the limit are not hit evacuated. A value of 0 disables the limit.

proxy.config.cache.limits.http.max_alts
Scope
CONFIG
Type
INT
Default
5

The maximum number of alternates that are allowed for any given URL. Disable by setting to 0.

proxy.config.cache.log.alternate.eviction
Scope
CONFIG
Type
INT
Default
0

When enabled (1), Traffic Server will emit a Status level log entry every time an alternate for an object is evicted due to the number of its alternates exceeding the value of proxy.config.cache.limits.http.max_alts. The URI for the evicted alternate is included in the log. This logging may be useful to determine whether proxy.config.cache.limits.http.max_alts is tuned correctly for a given environment. It also provides visibility into alternate eviction for individual objects, which can be helpful for diagnosing unexpected Vary: header behavior from particular origins.

For further details concerning the caching of alternates, see Caching HTTP Alternates.

By default, alternate eviction logging is disabled (set to 0).

proxy.config.cache.target_fragment_size
Scope
CONFIG
Type
INT
Default
1048576

Sets the target size of a contiguous fragment of a file in the disk cache. When setting this, consider that larger numbers could waste memory on slow connections, but smaller numbers could increase (waste) seeks.

proxy.config.cache.alt_rewrite_max_size
Scope
CONFIG
Type
INT
Default
4096

Configures the size, in bytes, of an alternate that will be considered small enough to trigger a rewrite of the resident alt fragment within a write vector. For further details on cache write vectors, refer to the developer documentation for CacheVC.

RAM Cache

proxy.config.cache.ram_cache.size
Scope
CONFIG
Type
INT
Default
-1

By default the RAM cache size is automatically determined, based on disk cache size; approximately 10 MB of RAM cache per GB of disk cache. Alternatively, it can be set to a fixed value such as 20GB (21474836480)

proxy.config.cache.ram_cache_cutoff
Scope
CONFIG
Type
INT
Default
4194304

Objects greater than this size will not be kept in the RAM cache. This should be set high enough to keep objects accessed frequently in memory in order to improve performance. 4MB (4194304)

proxy.config.cache.ram_cache.algorithm
Scope
CONFIG
Type
INT
Default
1

Two distinct RAM caches are supported, the default (1) being the simpler LRU (Least Recently Used) cache. As an alternative, the CLFUS (Clocked Least Frequently Used by Size) is also available, by changing this configuration to 0.

proxy.config.cache.ram_cache.use_seen_filter
Scope
CONFIG
Type
INT
Default
1

Enabling this option will filter inserts into the RAM cache to ensure that they have been seen at least once. For the LRU, this provides scan resistance. Note that CLFUS already requires that a document have history before it is inserted, so for CLFUS, setting this option means that a document must be seen three times before it is added to the RAM cache.

proxy.config.cache.ram_cache.compress
Scope
CONFIG
Type
INT
Default
0

The CLFUS RAM cache also supports an optional in-memory compression. This is not to be confused with Content-Encoding: gzip compression. The RAM cache compression is intended to try to save space in the RAM, and is not visible to the User-Agent (client).

Possible values are:

Value

Description

0

No compression

1

Fastlz (extremely fast, relatively low compression)

2

Libz (moderate speed, reasonable compression)

3

Liblzma (very slow, high compression)

Compression runs on task threads. To use more cores for RAM cache compression, increase proxy.config.task_threads.

Heuristic Expiration

proxy.config.http.cache.heuristic_min_lifetime
Scope
CONFIG
Type
INT
Default
3600
Reloadable
Yes
Overridable
Yes

The minimum amount of time, in seconds, an HTTP object without an expiration date can remain fresh in the cache before is considered to be stale.

proxy.config.http.cache.heuristic_max_lifetime
Scope
CONFIG
Type
INT
Default
86400
Reloadable
Yes
Overridable
Yes

The maximum amount of time, in seconds, an HTTP object without an expiration date can remain fresh in the cache before is considered to be stale.

proxy.config.http.cache.heuristic_lm_factor
Scope
CONFIG
Type
FLOAT
Default
0.10
Reloadable
Yes
Overridable
Yes

The aging factor for freshness computations. Traffic Server stores an object for this percentage of the time that elapsed since it last changed.

Dynamic Content & Content Negotiation

proxy.config.http.cache.open_read_retry_time
Scope
CONFIG
Type
INT
Default
10
Reloadable
Yes
Overridable
Yes

The number of milliseconds a cacheable request will wait before requesting the object from cache if an equivalent request is in flight.

proxy.config.http.cache.max_open_read_retries
Scope
CONFIG
Type
INT
Default
-1
Reloadable
Yes
Overridable
Yes

The number of times to attempt fetching an object from cache if there was an equivalent request in flight.

proxy.config.http.cache.max_open_write_retries
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

The number of times to attempt a cache open write upon failure to get a write lock.

This config is ignored when proxy.config.http.cache.open_write_fail_action is set to 5.

proxy.config.http.cache.open_write_fail_action
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

This setting indicates the action taken on failing to obtain the cache open write lock on either a cache miss or a cache hit stale. This typically happens when there is more than one request to the same cache object simultaneously. During such a scenario, all but one (which goes to the origin) request is served either a stale copy or an error depending on this setting.

Value

Description

0

Default. Disable cache and go to origin server.

1

Return a 502 error on a cache miss.

2

Serve stale if object’s age is under proxy.config.http.cache.max_stale_age. Otherwise, go to origin server.

3

Return a 502 error on a cache miss or serve stale on a cache revalidate if object’s age is under proxy.config.http.cache.max_stale_age. Otherwise, go to origin server.

4

Return a 502 error on either a cache miss or on a revalidation.

5

Retry Cache Read on a Cache Write Lock failure. This option together with proxy.config.cache.enable_read_while_writer configuration allows to collapse concurrent requests without a need for any plugin. Make sure to configure the Read While Writer feature correctly. Note that this option may result in CACHE_LOOKUP_COMPLETE HOOK being called back more than once.

Customizable User Response Pages

proxy.config.body_factory.enable_customizations
Scope
CONFIG
Type
INT
Default
1

Specifies whether customizable response pages are language specific or not:

Value

Description

1

Enable customizable user response pages in the default directory only.

2

Enable language-targeted user response pages.

3

Enable host-targeted user response pages.

proxy.config.body_factory.enable_logging
Scope
CONFIG
Type
INT
Default
0

Enables (1) or disables (0) logging for customizable response pages. When enabled, Traffic Server records a message in the error log each time a customized response page is used or modified.

proxy.config.body_factory.template_sets_dir
Scope
CONFIG
Type
STRING
Default
etc/trafficserver/body_factory

The customizable response page default directory. If this is a relative path, Traffic Server resolves it relative to the PREFIX directory.

proxy.config.body_factory.template_base
Scope
CONFIG
Type
STRING
Default
“”
Reloadable
Yes
Overridable
Yes

A prefix for the file name to use to find an error template file. If set (not the empty string) this value and an underscore are prepended to the file name to find in the template sets directory. See HTML Messages Sent to Clients.

proxy.config.body_factory.response_max_size
Scope
CONFIG
Type
INT
Default
8192
Reloadable
Yes

Maximum size of the error template response page.

proxy.config.body_factory.response_suppression_mode
Scope
CONFIG
Type
INT
Default
0

Specifies when Traffic Server suppresses generated response pages:

Value

Description

0

Never suppress generated response pages.

1

Always suppress generated response pages.

2

Suppress response pages only for internal traffic.

proxy.config.http_ui_enabled
Scope
CONFIG
Type
INT
Default
0

Specifies which http Inspector UI endpoints to allow within remap.config:

Value

Description

0

Disable all http UI endpoints.

1

Enable only Cache Inspector endpoints.

2

Enable only stats endpoints.

3

Enable all http UI endpoints.

To enable any endpoint there needs to be an entry in remap.config which specifically enables it. Such a line would look like:

map / http://{cache}

The following are the cache endpoints:

Name

Description

cache

UI to interact with the cache.

The following are the stats endpoints:

Name

Description

cache-internal

Statistics about cache evacuation and volumes.

hostdb

Lookups against the hostdb.

http

HTTPSM details, this endpoint is also gated by proxy.config.http.enable_http_info.

net

Lookup and listing of open connections.

proxy.config.http.enable_http_info
Scope
CONFIG
Type
INT
Default
0

Enables (1) or disables (0) access to an endpoint within proxy.config.http_ui_enabled which shows details about inflight transactions (HttpSM).

DNS

proxy.config.dns.search_default_domains
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Traffic Server can attempt to resolve unqualified hostnames by expanding to the local domain. For example if a client makes a request to an unqualified host (e.g. host_x) and the Traffic Server local domain is y.com, then Traffic Server will expand the hostname to host_x.y.com.

Value

Description

0

Disable local domain expansion.

1

Enable local domain expansion.

2

Enable local domain expansion, but do not split local domain name.

proxy.config.dns.splitDNS.enabled
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Enables (1) or disables (0) DNS server selection. When enabled, Traffic Server refers to the splitdns.config file for the selection specification. Refer to Configuring DNS Server Selection.

proxy.config.dns.resolv_conf
Scope
CONFIG
Type
STRING
Default
/etc/resolv.conf

Allows one to specify which resolv.conf file to use for finding resolvers. While the format of this file must be the same as the standard resolv.conf file, this option allows an administrator to manage the set of resolvers in an external configuration file, without affecting how the rest of the operating system uses DNS. Note that this setting works in conjunction with proxy.config.dns.nameservers, with its settings appended to the resolv.conf contents.

proxy.config.dns.round_robin_nameservers
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes

Enables (1) or disables (0) DNS server round-robin.

proxy.config.dns.nameservers
Scope
CONFIG
Type
STRING
Default
NULL
Reloadable
Yes

The DNS servers. Note that this does not override proxy.config.dns.resolv_conf. That is, the contents of the file listed in proxy.config.dns.resolv_conf will be appended to the list of nameservers specified here. To prevent this, a bogus file can be listed there.

Example

IPv4 DNS server, loopback and port 9999

CONFIG proxy.config.dns.nameservers STRING 127.0.0.1:9999

Example

IPv6 DNS server, loopback and port 9999

CONFIG proxy.config.dns.nameservers STRING [::1]:9999
proxy.config.srv_enabled
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

Enables (1) or disables (0) the use of SRV records for origin server lookup. Traffic Server will use weights found in the SRV record as a weighted round robin in origin selection. Note that Traffic Server will lookup _$scheme._$internet_protocol.$origin_name. For instance, if the origin is set to https://my.example.com, Traffic Server would lookup _https._tcp.my.example.com. Also note that the port returned in the SRV record MUST match the port being used for the origin (e.g. if the origin scheme is http and a default port, there should be a SRV record with port 80).

proxy.config.dns.dedicated_thread
Scope
CONFIG
Type
INT
Default
0

Create and dedicate a thread entirely for DNS processing. This is probably most useful on system which do a significant number of DNS lookups, typically forward proxies. But even on other systems, it can avoid some contention on the first worker thread (which otherwise takes on the burden of all DNS lookups).

proxy.config.dns.validate_query_name
Scope
CONFIG
Type
INT
Default
0

When enabled (1) provides additional resilience against DNS forgery (for instance in DNS Injection attacks), particularly in forward or transparent proxies, but requires that the resolver populates the queries section of the response properly.

proxy.config.dns.connection_mode
Scope
CONFIG
Type
INT
Default
0

Three connection modes between Traffic Server and nameservers can be set – UDP_ONLY, TCP_RETRY, TCP_ONLY.

Value

Description

0

UDP_ONLY: Traffic Server always talks to nameservers over UDP.

1

TCP_RETRY: Traffic Server first UDP, retries with TCP if UDP response is truncated.

2

TCP_ONLY: Traffic Server always talks to nameservers over TCP.

proxy.config.dns.max_tcp_continuous_failures
Scope
CONFIG
Type
INT
Default
10

If DNS connection mode is TCP_RETRY, set the threshold of the continuous TCP query failures count for the TCP connection, reset the TCP connection immediately if the continuous TCP query failures conut over the threshold. If the threshold is 0 (or less than 0) we close this feature.

proxy.config.dns.max_dns_in_flight
Scope
CONFIG
Type
INT
Default
2048

Maximum inflight DNS queries made by Traffic Server at any given instant

proxy.config.dns.lookup_timeout
Scope
CONFIG
Type
INT
Default
20

Time to wait for a DNS response in seconds.

proxy.config.dns.retries
Scope
CONFIG
Type
INT
Default
5

Maximum number of retries made by Traffic Server on a given DNS query

proxy.config.dns.local_ipv4
Scope
CONFIG
Type
STRING
Default
NULL

Local IPV4 address to bind to in order to make DNS requests

proxy.config.dns.local_ipv6
Scope
CONFIG
Type
STRING
Default
NULL

Local IPV6 address to bind to in order to make DNS requests

HostDB

proxy.config.hostdb.lookup_timeout
Scope
CONFIG
Type
INT
Default
30
Units
seconds
Reloadable
Yes

Time to wait for a DNS response in seconds.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.hostdb.serve_stale_for
Scope
CONFIG
Type
INT
Default
*NONE*
Units
seconds
Reloadable
Yes

The number of seconds for which to use a stale NS record while initiating a background fetch for the new data.

If not set then stale records are not served.

proxy.config.hostdb.max_size
Scope
CONFIG
Type
INT
Default
10737418240
Units
bytes

The maximum amount of space (in bytes) allocated to hostdb. Setting this value to -1 will disable size limit enforcement.

proxy.config.hostdb.max_count
Scope
CONFIG
Type
INT
Default
-1

The maximum number of entries that can be stored in hostdb. A value of -1 disables item count limit enforcement.

Note

For values above 200000, you must increase proxy.config.hostdb.max_size by at least 44 bytes per entry.

proxy.config.hostdb.round_robin_max_count
Scope
CONFIG
Type
INT
Default
16

The maximum count of DNS answers per round robin hostdb record. The default variable is 16.

proxy.config.hostdb.ttl_mode
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

A host entry will eventually time out and be discarded. This variable controls how that time is calculated. A DNS request will return a TTL value and an internal value can be set with proxy.config.hostdb.timeout. This variable determines which value will be used.

Value

TTL

0

The TTL from the DNS response.

1

The internal timeout value.

2

The smaller of the DNS and internal TTL values. The internal timeout value becomes a maximum TTL.

3

The larger of the DNS and internal TTL values. The internal timeout value become a minimum TTL.

proxy.config.hostdb.timeout
Scope
CONFIG
Type
INT
Default
86400
Units
seconds
Reloadable
Yes

Internal time to live value for host DB entries in seconds.

See proxy.config.hostdb.ttl_mode for when this value is used. See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.hostdb.fail.timeout
Scope
CONFIG
Type
INT
Default
0

Time to live value for “failed” hostdb lookups.

Note

HostDB considers any response that does not contain a response to the query a failure. This means “failure” responses (such as SOA) are subject to this timeout

proxy.config.hostdb.strict_round_robin
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Set host resolution to use strict round robin.

When this and proxy.config.hostdb.timed_round_robin are both disabled (set to 0), Traffic Server always uses the same origin server for the same client, for as long as the origin server is available. Otherwise if this is set then IP address is rotated on every request. This setting takes precedence over proxy.config.hostdb.timed_round_robin.

proxy.config.hostdb.timed_round_robin
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Set host resolution to use timed round robin.

When this and proxy.config.hostdb.strict_round_robin are both disabled (set to 0), Traffic Server always uses the same origin server for the same client, for as long as the origin server is available. Otherwise if this is set to N the IP address is rotated if more than N seconds have passed since the first time the current address was used.

proxy.config.hostdb.host_file.path
Scope
CONFIG
Type
STRING
Default
NULL

Set the file path for an external host file.

If this is set (non-empty) then the file is presumed to be a hosts file in the standard . It is read and the entries there added to the HostDB. The file is periodically checked for a more recent modification date in which case it is reloaded. The interval is set with proxy.config.hostdb.host_file.interval.

While not technically reloadable, the value is read every time the file is to be checked so that if changed the new value will be used on the next check and the file will be treated as modified.

proxy.config.hostdb.host_file.interval
Scope
CONFIG
Type
INT
Default
86400
Units
seconds
Reloadable
Yes

Set the file changed check timer for proxy.config.hostdb.host_file.path.

The file is checked every this many seconds to see if it has changed. If so the HostDB is updated with the new values in the file.

proxy.config.hostdb.partitions
Scope
CONFIG
Type
INT
Default
64

The number of partitions for hostdb. If you are seeing lock contention within hostdb’s cache (due to a large number of records) you can increase the number of partitions

proxy.config.hostdb.ip_resolve
Scope
CONFIG
Type
STRING
Default
NULL
Overridable
Yes

Set the host resolution style.

This is an ordered list of keywords separated by semicolons that specify how a host name is to be resolved to an IP address. The keywords are case insensitive.

Keyword

Description

ipv4

Resolve to an IPv4 address.

ipv6

Resolve to an IPv6 address.

client

Resolve to the same family as the client IP address.

only

Stop resolving.

The order of the keywords is critical. When a host name needs to be resolved it is resolved in same order as the keywords. If a resolution fails, the next option in the list is tried. The keyword only means to give up resolution entirely. The keyword list has a maximum length of three keywords, more are never needed. By default there is an implicit ipv4;ipv6 attached to the end of the string unless the keyword only appears.

Example

Use the incoming client family, then try IPv4 and IPv6.

client;ipv4;ipv6

Because of the implicit resolution this can also be expressed as just

client

Example

Resolve only to IPv4.

ipv4;only

Example

Resolve only to the same family as the client (do not permit cross family transactions).

client;only

This value is a global default that can be overridden by proxy.config.http.server_ports.

Note

This style is used as a convenience for the administrator. During a resolution the resolution order will be one family, then possibly the other. This is determined by changing client to ipv4 or ipv6 based on the client IP address and then removing duplicates.

Important

This option has no effect on outbound transparent connections The local IP address used in the connection to the origin server is determined by the client, which forces the IP address family of the address used for the origin server. In effect, outbound transparent connections always use a resolution style of “client”.

proxy.config.hostdb.verify_after
Scope
CONFIG
Type
INT
Default
720

Set the interval (in seconds) in which to re-query DNS regardless of TTL status.

proxy.config.hostdb.filename
Scope
CONFIG
Type
STRING
Default
host.db

The filename to persist hostdb to on disk.

proxy.config.cache.hostdb.sync_frequency
Scope
CONFIG
Type
INT
Default
0

Set the frequency (in seconds) to sync hostdb to disk. If set to zero (default as of v9.0.0), we won’t sync to disk ever.

Note: hostdb is synced to disk on a per-partition basis (of which there are 64). This means that the minimum time to sync all data to disk is proxy.config.cache.hostdb.sync_frequency * 64

Logging Configuration

proxy.config.log.logging_enabled
Scope
CONFIG
Type
INT
Default
3
Reloadable
Yes

Enables and disables event logging:

Value

Effect

0

Logging disabled.

1

Log errors only.

2

Log transactions only.

3

Dual logging (errors and transactions).

Refer to Logging for more information on event logging.

proxy.config.log.max_secs_per_buffer
Scope
CONFIG
Type
INT
Default
5
Reloadable
Yes

The maximum amount of time before data in the buffer is flushed to disk.

Note

The effective lower bound to this config is whatever proxy.config.log.periodic_tasks_interval is set to.

proxy.config.log.max_space_mb_for_logs
Scope
CONFIG
Type
INT
Default
25000
Units
megabytes
Reloadable
Yes

The amount of space allocated to the logging directory (in MB). The headroom amount specified by proxy.config.log.max_space_mb_headroom is taken from this space allocation.

Note

All files in the logging directory contribute to the space used, even if they are not log files.

proxy.config.log.max_space_mb_headroom
Scope
CONFIG
Type
INT
Default
1000
Units
megabytes
Reloadable
Yes

The tolerance for the log space limit (in megabytes). If the variable proxy.config.log.auto_delete_rolled_files is set to 1 (enabled), then auto-deletion of log files is triggered when the amount of free space available in the logging directory is less than the value specified here.

proxy.config.log.hostname
Scope
CONFIG
Type
STRING
Default
localhost
Reloadable
Yes

The hostname of the machine running Traffic Server.

proxy.config.log.logfile_dir
Scope
CONFIG
Type
STRING
Default
var/log/trafficserver
Reloadable
Yes

The path to the logging directory. This can be an absolute path or a path relative to the PREFIX directory in which Traffic Server is installed.

Note

The directory you specify must already exist.

proxy.config.log.logfile_perm
Scope
CONFIG
Type
STRING
Default
rw-r–r–
Reloadable
Yes

The log file permissions. The standard UNIX file permissions are used (owner, group, other). Permissible values are:

Value

Description

-

No permissions.

r

Read permission.

w

Write permission.

x

Execute permission.

Permissions are subject to the umask settings for the Traffic Server process. This means that a umask setting of 002 will not allow write permission for others, even if specified in the configuration file. Permissions for existing log files are not changed when the configuration is modified.

proxy.config.log.rolling_enabled
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes

Specifies how log files are rolled. You can specify the following values:

Value

Description

0

Disables log file rolling.

1

Enables log file rolling at specific intervals during the day (specified with the proxy.config.log.rolling_interval_sec and proxy.config.log.rolling_offset_hr variables).

2

Enables log file rolling when log files reach a specific size (specified with proxy.config.log.rolling_size_mb).

3

Enables log file rolling at specific intervals during the day or when log files reach a specific size (whichever occurs first).

4

Enables log file rolling at specific intervals during the day when log files reach a specific size (i.e. at a specified time if the file is of the specified size).

proxy.config.log.rolling_interval_sec
Scope
CONFIG
Type
INT
Default
86400
Reloadable
Yes

The log file rolling interval, in seconds. The minimum value is 60 (1 minute). The maximum, and default, value is 86400 seconds (one day).

Note

If you start Traffic Server within a few minutes of the next rolling time, then rolling might not occur until the next rolling time.

proxy.config.log.rolling_offset_hr
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

The file rolling offset hour. The hour of the day that starts the log rolling period.

proxy.config.log.rolling_size_mb
Scope
CONFIG
Type
INT
Default
10
Reloadable
Yes

The size, in megabytes, that log files must reach before rolling takes place. The minimum value for this setting is 10.

proxy.config.log.rolling_min_count
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Specifies the minimum count of rolled (event) logs to keep. This value will be used to decide the order of auto-deletion (if enabled). A default value of 0 means auto-deletion will try to keep logs as much as possible. This value can be and should be overridden in logging.yaml. See Log Rotation and Retention for guidance.

proxy.config.log.rolling_max_count
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Specifies the maximum count of rolled output logs to keep. This value will be used by the auto-deletion (if enabled) to trim the number of rolled log files every time the log is rolled. A default value of 0 means auto-deletion will not try to limit the number of output logs. See Log Rotation and Retention for an use-case for this option.

proxy.config.log.rolling_allow_empty
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

While rolling default behavior is to rename, close and re-open the log file only when/if there is something to log to the log file. This option opens a new log file right after rolling even if there is nothing to log (i.e. nothing to be logged due to lack of requests to the server) which may lead to 0-sized log files while rolling. See Log Rotation and Retention for an use-case for this option.

Value

Description

0

No empty log files created and rolled if there was nothing to log

1

Allow empty log files to be created and rolled even if there was nothing to log

proxy.config.log.auto_delete_rolled_files
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes

Enables (1) or disables (0) automatic deletion of rolled files.

proxy.config.log.sampling_frequency
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes

Configures Traffic Server to log only a sample of transactions rather than every transaction. You can specify the following values:

Value

Description

1

Log every transaction.

2

Log every second transaction.

3

Log every third transaction.

n

… and so on…

proxy.config.log.periodic_tasks_interval
Scope
CONFIG
Type
INT
Default
5
Units
seconds
Reloadable
Yes

How often Traffic Server executes log related periodic tasks, in seconds

proxy.config.log.proxy.config.log.throttling_interval_msec
Scope
CONFIG
Type
INT
Default
60000
Units
milliseconds
Reloadable
Yes

The minimum amount of milliseconds between repeated throttled Traffic Server log events. A value of 0 implies no throttling. Note that for performance reasons only certain logs are compiled with throttling applied to them.

Throttling is applied to all log events for a particular message which is emitted within its throttling interval. That is, once a throttled log is emitted, none will be emitted until the next log event for that message which occurs outside of this configured interval. As mentioned above, this message is applied not broadly but rather to potentially noisy log messages, such as ones that might occur thousands of times a second under certain error conditions. Once the next log event occurs outside of its interval, a summary message is printed conveying how many messages of that type were throttled since the last time it was emitted.

It is possible that a log is emitted, followed by more of its type in an interval, then none are emitted after that. Be aware this would result in no summary log message for that interval until the message is emitted again outside of the throttled interval.

proxy.config.http.slow.log.threshold
Scope
CONFIG
Type
INT
Default
0
Units
milliseconds
Reloadable
Yes

If set to a non-zero value N then any connection that takes longer than N milliseconds from accept to completion will cause its timing stats to be written to the debugging log file. This is identifying data about the transaction and all of the transaction milestones.

proxy.config.http2.connection.slow.log.threshold
Scope
CONFIG
Type
INT
Default
0
Units
milliseconds
Reloadable
Yes

If set to a non-zero value N then any HTTP/2 connection that takes longer than N milliseconds from open to close will cause its timing stats to be written to the debugging log file. This is identifying data about the transaction and all of the transaction milestones.

proxy.config.http2.stream.slow.log.threshold
Scope
CONFIG
Type
INT
Default
0
Units
milliseconds
Reloadable
Yes

If set to a non-zero value N then any HTTP/2 stream that takes longer than N milliseconds from open to close will cause its timing stats to be written to the debugging log file. This is identifying data about the transaction and all of the transaction milestones.

proxy.config.log.config.filename
Scope
CONFIG
Type
STRING
Default
logging.yaml
Reloadable
Yes
Deprecated
Yes

This configuration value specifies the path to the logging.yaml configuration file. If this is a relative path, Traffic Server loads it relative to the SYSCONFDIR directory.

proxy.config.log.max_line_size
Scope
CONFIG
Type
INT
Default
9216
Units
bytes

This controls the maximum line length for ASCII formatted log entries. This applies to ASCII_PIPE and ASCII file logs, unless proxy.config.log.ascii_buffer_size is also specified and the value of ascii_buffer_size is larger than max_line_size: in that case, max_line_size only applies to ASCII_PIPE logs while ascii_buffer_size will apply to ASCII (non-pipe) log files.

proxy.config.log.ascii_buffer_size
Scope
CONFIG
Type
INT
Default
36864
Units
bytes

This controls the maximum line length for ASCII formatted log entries that are non-pipe log files. If this value is smaller than proxy.config.log.max_line_size, then the latter will be used for both ASCII and ASCII_PIPE log files. If both max_line_size and ascii_buffer_size are set, then max_line_size will be used for ASCII_PIPE logs while ascii_buffer_size will be used for ASCII (non-pipe) log files. This all might seem complicated, but just keep in mind that the intention of ascii_buffer_size is to simply provide a way for the user to configure different ASCII and ASCII_PIPE maximum line lengths.

proxy.config.log.log_buffer_size
Scope
CONFIG
Type
INT
Default
9216
Units
bytes
Reloadable
Yes

This is an orthogonal mechanism from proxy.config.log.max_line_size and proxy.config.log.ascii_buffer_size for limiting line length size by constraining the log entry buffer to a particular amount of memory. Unlike the above two configurations, log_buffer_size applies to both binary and ASCII log file entries. For ASCII log files, if a maximum log size is set via both the above mechanisms and by log_buffer_size, then the smaller of the two configurations will be applied to the line length.

Diagnostic Logging Configuration

proxy.config.diags.output.diag
Scope
CONFIG
Type
STRING
Default
E
proxy.config.diags.output.debug
Scope
CONFIG
Type
STRING
Default
E
proxy.config.diags.output.status
Scope
CONFIG
Type
STRING
Default
L
proxy.config.diags.output.note
Scope
CONFIG
Type
STRING
Default
L
proxy.config.diags.output.warning
Scope
CONFIG
Type
STRING
Default
L
proxy.config.diags.output.error
Scope
CONFIG
Type
STRING
Default
SL
proxy.config.diags.output.fatal
Scope
CONFIG
Type
STRING
Default
SL
proxy.config.diags.output.alert
Scope
CONFIG
Type
STRING
Default
L
proxy.config.diags.output.emergency
Scope
CONFIG
Type
STRING
Default
SL

The diagnostic output configuration variables control where Traffic Server should log diagnostic output. Messages at each diagnostic level can be directed to any combination of diagnostic destinations. Valid diagnostic message destinations are:

Value

Description

O

Log to standard output.

E

Log to standard error.

S

Log to syslog.

L

Log to diags.log (with the filename configurable via proxy.config.diags.logfile.filename).

Example

To log debug diagnostics to both syslog and diags.log:

CONFIG proxy.config.diags.output.debug STRING SL
proxy.config.diags.show_location
Scope
CONFIG
Type
INT
Default
1

Annotates diagnostic messages with the source code location. Set to 1 to enable for Debug() messages only. Set to 2 to enable for all messages.

proxy.config.diags.debug.enabled
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

When set to 1, enables logging for diagnostic messages whose log level is diag or debug.

When set to 2, interprets the proxy.config.diags.debug.client_ip setting determine whether diagnostic messages are logged.

proxy.config.diags.debug.client_ip
Scope
CONFIG
Type
STRING
Default
NULL

if proxy.config.diags.debug.enabled is set to 2, this value is tested against the source IP of the incoming connection. If there is a match, all the diagnostic messages for that connection and the related outgoing connection will be logged.

proxy.config.diags.debug.tags
Scope
CONFIG
Type
STRING
Default
http|dns

Each Traffic Server diag and debug level message is annotated with a subsystem tag. This configuration contains an anchored regular expression that filters the messages based on the tag. The expressions are prefix matched which creates an implicit .* at the end. Therefore the default value http|dns will match tags such as http, http_hdrs, dns, and dns_recv.

Some commonly used debug tags are:

Tag

Subsystem usage

dns

DNS query resolution

http_hdrs

Logs the headers for HTTP requests and responses

privileges

Privilege elevation

ssl

TLS termination and certificate processing

Traffic Server plugins will typically log debug messages using the TSDebug() API, passing the plugin name as the debug tag.

proxy.config.diags.debug.throttling_interval_msec
Scope
CONFIG
Type
INT
Default
0
Units
milliseconds
Reloadable
Yes

The minimum amount of milliseconds between repeated Traffic Server diag and debug log events. A value of 0 implies no throttling. All diags and debug logs are compiled with throttling applied to them.

For details about how log throttling works, see log.throttling_interval_msec.

proxy.config.diags.logfile.filename
Scope
CONFIG
Type
STRING
Default
diags.log

The name of the file to which Traffic Server diagnostic logs will be emitted. For information on the diagnostic log file, see diags.log. For the configurable parameters concerning what log content is emitted to diags.log, see the Diagnostic Output Configuration Variables above.

If this is set to stdout or stderr, then all diagnostic logging will go to the stdout or stderr stream, respectively.

proxy.config.error.logfile.filename
Scope
CONFIG
Type
STRING
Default
error.log

The name of the file to which Traffic Server transaction error logs will be emitted. For more information on these log messages, see error.log.

If this is set to stdout or stderr, then all transaction error logging will go to the stdout or stderr stream, respectively.

proxy.config.diags.logfile_perm
Scope
CONFIG
Type
STRING
Default
rw-r–r–

The log file permissions. The standard UNIX file permissions are used (owner, group, other). Permissible values are:

Value

Description

-

No permissions.

r

Read permission.

w

Write permission.

x

Execute permission.

Permissions are subject to the umask settings for the Traffic Server process. This means that a umask setting of 002 will not allow write permission for others, even if specified in the configuration file. Permissions for existing log files are not changed when the configuration is modified.

proxy.config.diags.logfile.rolling_enabled
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Specifies how the diagnostics log is rolled. You can specify the following values:

Value

Description

0

Disables diagnostics log rolling.

1

Enables diagnostics log rolling at specific intervals (specified with proxy.config.diags.logfile.rolling_interval_sec). The “clock” starts ticking on Traffic Server startup.

2

Enables diagnostics log rolling when the diagnostics log reaches a specific size (specified with proxy.config.diags.logfile.rolling_size_mb).

3

Enables diagnostics log rolling at specific intervals or when the diagnostics log reaches a specific size (whichever occurs first).

proxy.config.diags.logfile.rolling_interval_sec
Scope
CONFIG
Type
INT
Default
3600
Units
seconds
Reloadable
Yes

Specifies how often the diagnostics log is rolled, in seconds. The timer starts on Traffic Server startup.

proxy.config.diags.logfile.rolling_size_mb
Scope
CONFIG
Type
INT
Default
100
Units
megabytes
Reloadable
Yes

Specifies at what size to roll the diagnostics log at.

proxy.config.diags.logfile.rolling_min_count
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Specifies the minimum count of rolled diagnostic logs to keep. This value will be used to decide the order of auto-deletion (if enabled). A default value of 0 means auto-deletion will try to keep diagnostic logs as much as possible. See Log Rotation and Retention for guidance.

Reverse Proxy

proxy.config.reverse_proxy.enabled
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes

Enables (1) or disables (0) HTTP reverse proxy.

proxy.config.header.parse.no_host_url_redirect
Scope
CONFIG
Type
STRING
Default
NULL
Reloadable
Yes

The URL to which to redirect requests with no host headers (reverse proxy).

URL Remap Rules

proxy.config.url_remap.filename
Scope
CONFIG
Type
STRING
Default
remap.config
Deprecated
Yes

Sets the name of the remap.config file.

proxy.config.url_remap.remap_required
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes

Set this variable to 1 if you want Traffic Server to serve requests only from origin servers listed in the mapping rules of the remap.config file. If a request does not match, then the browser will receive an error.

proxy.config.url_remap.pristine_host_hdr
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

Set this variable to 1 if you want to retain the client host header in a request during remapping.

SSL Termination

proxy.config.ssl.server.cipher_suite
Scope
CONFIG
Type
STRING
Default
<see notes>

Configures the set of encryption, digest, authentication, and key exchange algorithms provided by OpenSSL which Traffic Server will use for SSL connections. For the list of algorithms and instructions on constructing an appropriately formatting cipher_suite string, see OpenSSL Ciphers.

The current default is:

ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-CCM:ECDHE-ECDSA-AES128-CCM:ECDHE-ECDSA-AES256-CCM8:ECDHE-ECDSA-AES128-CCM8:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-CCM8:DHE-RSA-AES128-CCM8:DHE-RSA-AES256-CCM:DHE-RSA-AES128-CCM:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-CCM8:AES128-CCM8:AES256-CCM:AES128-CCM:AES256-SHA256:AES128-SHA2

proxy.config.ssl.client.cipher_suite
Scope
CONFIG
Type
STRING
Default
<See notes under proxy.config.ssl.server.cipher_suite.>

Configures the cipher_suite which Traffic Server will use for SSL connections to origin or next hop. This currently defaults to:

ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-CCM8:ECDHE-ECDSA-AES256-CCM:DHE-RSA-AES256-CCM8:DHE-RSA-AES256-CCM:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-ARIA256-GCM-SHA384:ECDHE-ARIA256-GCM-SHA384:DHE-DSS-ARIA256-GCM-SHA384:DHE-RSA-ARIA256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:ECDHE-ECDSA-CAMELLIA256-SHA384:ECDHE-RSA-CAMELLIA256-SHA384:DHE-RSA-CAMELLIA256-SHA256:DHE-DSS-CAMELLIA256-SHA256:RSA-PSK-AES256-GCM-SHA384:RSA-PSK-CHACHA20-POLY1305:RSA-PSK-ARIA256-GCM-SHA384:AES256-GCM-SHA384:AES256-CCM8:AES256-CCM:ARIA256-GCM-SHA384:AES256-SHA256:CAMELLIA256-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-CCM8:ECDHE-ECDSA-AES128-CCM:DHE-RSA-AES128-CCM8:DHE-RSA-AES128-CCM:ECDHE-ECDSA-ARIA128-GCM-SHA256:ECDHE-ARIA128-GCM-SHA256:DHE-DSS-ARIA128-GCM-SHA256:DHE-RSA-ARIA128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:ECDHE-ECDSA-CAMELLIA128-SHA256:ECDHE-RSA-CAMELLIA128-SHA256:DHE-RSA-CAMELLIA128-SHA256:DHE-DSS-CAMELLIA128-SHA256:RSA-PSK-AES128-GCM-SHA256:RSA-PSK-ARIA128-GCM-SHA256:AES128-GCM-SHA256:AES128-CCM8:AES128-CCM:ARIA128-GCM-SHA256:AES128-SHA256:CAMELLIA128-SHA256

proxy.config.ssl.server.TLSv1_3.cipher_suites
Scope
CONFIG
Type
STRING
Default
<See notes>

Configures the pair of the AEAD algorithm and hash algorithm to be used with HKDF provided by OpenSSL which Traffic Server will use for TLSv1.3 connections. For the list of algorithms and instructions, see The -ciphersuites section of OpenSSL Ciphers.

The current default value is:

TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256

This configuration works with OpenSSL v1.1.1 and above.

proxy.config.ssl.server.honor_cipher_order
Scope
CONFIG
Type
INT
Default
1

By default (1) Traffic Server will use the server’s cipher suites preferences instead of the client preferences. By disabling it (0) Traffic Server will use client’s cipher suites preferences.

proxy.config.ssl.server.prioritize_chacha
Scope
CONFIG
Type
INT
Default
0

By enabling it (1) Traffic Server will temporarily reprioritize ChaCha20-Poly1305 ciphers to the top of the server cipher list if a ChaCha20-Poly1305 cipher is at the top of the client cipher list.

This configuration works with OpenSSL v1.1.1 and above.

proxy.config.ssl.client.TLSv1_3.cipher_suites
Scope
CONFIG
Type
STRING
Default
<See notes under proxy.config.ssl.server.tls.cipher_suites>

Configures the cipher_suites which Traffic Server will use for TLSv1.3 connections to origin or next hop. This configuration works with OpenSSL v1.1.1 and above.

The current default is:

TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256

proxy.config.ssl.server.groups_list
Scope
CONFIG
Type
STRING
Default
<See notes>

Configures the list of supported groups provided by OpenSSL which Traffic Server will be used to determine the set of shared groups. The value is a colon separated list of group NIDs or names, for example “P-521:P-384:P-256”. For instructions, see “Groups” section of TLS1.3 - OpenSSLWiki.

The current default value with OpenSSL is:

X25519:P-256:X448:P-521:P-384

This configuration works with OpenSSL v1.0.2 and above.

proxy.config.ssl.client.groups_list
Scope
CONFIG
Type
STRING
Default
<See notes under proxy.config.ssl.server.groups_list.>

Configures the list of supported groups provided by OpenSSL which Traffic Server will use for the “key_share” and “supported groups” extension of TLSv1.3 connections. The value is a colon separated list of group NIDs or names, for example “P-521:P-384:P-256”. For instructions, see “Groups” section of TLS1.3 - OpenSSLWiki.

This configuration works with OpenSSL v1.0.2 and above.

proxy.config.ssl.TLSv1
Scope
CONFIG
Type
INT
Default
0

Enables (1) or disables (0) TLSv1.0. If not specified, disabled by default.

proxy.config.ssl.TLSv1_1
Scope
CONFIG
Type
INT
Default
0

Enables (1) or disables (0) TLS v1.1. If not specified, disabled by default. [Requires OpenSSL v1.0.1 and higher]

Note

In order to enable TLS v1 or v1.1, additional ciphers must be added to proxy.config.ssl.client.cipher_suite. For example this list would restore the SHA1 (insecure!) cipher suites suitable for these deprecated TLS versions:

ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:AES256-SHA:AES128-SHA

proxy.config.ssl.TLSv1_2
Scope
CONFIG
Type
INT
Default
1

Enables (1) or disables (0) TLS v1.2. If not specified, enabled by default. [Requires OpenSSL v1.0.1 and higher]

proxy.config.ssl.TLSv1_3
Scope
CONFIG
Type
INT
Default
1

Enables (1) or disables (0) TLS v1.3. If not specified, enabled by default. [Requires OpenSSL v1.1.1 and higher]

proxy.config.ssl.client.certification_level
Scope
CONFIG
Type
INT
Default
0

Sets the client certification level:

Value

Description

0

Client certificates are ignored. Traffic Server does not verify client certificates during the SSL handshake. Access to Traffic Server depends on Traffic Server configuration options (such as access control lists).

1

Client certificates are optional. If a client has a certificate, then the certificate is validated. If the client does not have a certificate, then the client is still allowed access to Traffic Server unless access is denied through other Traffic Server configuration options.

2

Client certificates are required. The client must be authenticated during the SSL handshake. Clients without a certificate are not allowed to access Traffic Server.

proxy.config.ssl.server.multicert.filename
Scope
CONFIG
Type
STRING
Default
ssl_multicert.config
Deprecated
Yes

The location of the ssl_multicert.config file, relative to the Traffic Server configuration directory. In the following example, if the Traffic Server configuration directory is /etc/trafficserver, the Traffic Server SSL configuration file and the corresponding certificates are located in /etc/trafficserver/ssl:

CONFIG proxy.config.ssl.server.multicert.filename STRING ssl/ssl_multicert.config
CONFIG proxy.config.ssl.server.cert.path STRING etc/trafficserver/ssl
CONFIG proxy.config.ssl.server.private_key.path STRING etc/trafficserver/ssl
proxy.config.ssl.server.multicert.exit_on_load_fail
Scope
CONFIG
Type
INT
Default
1

By default (1), Traffic Server will not start unless all the SSL certificates listed in the ssl_multicert.config file successfully load. If false (0), SSL certificate load failures will not prevent Traffic Server from starting.

proxy.config.ssl.server.cert.path
Scope
CONFIG
Type
STRING
Default
/config

The location of the SSL certificates and chains used for accepting and validation new SSL sessions. If this is a relative path, it is appended to the Traffic Server installation PREFIX. All certificates and certificate chains listed in ssl_multicert.config will be loaded relative to this path.

proxy.config.ssl.server.private_key.path
Scope
CONFIG
Type
STRING
Default
NULL

The location of the SSL certificate private keys. Change this variable only if the private key is not located in the SSL certificate file. All private keys listed in ssl_multicert.config will be loaded relative to this path.

proxy.config.ssl.server.cert_chain.filename
Scope
CONFIG
Type
STRING
Default
NULL

The name of a file containing a global certificate chain that should be used with every server certificate. This file is only used if there are certificates defined in ssl_multicert.config. Unless this is an absolute path, it is loaded relative to the path specified by proxy.config.ssl.server.cert.path.

proxy.config.ssl.server.dhparams_file
Scope
CONFIG
Type
STRING
Default
NULL

The name of a file containing a set of Diffie-Hellman key exchange parameters. If not specified, 2048-bit DH parameters from RFC 5114 are used. These parameters are only used if a DHE (or EDH) cipher suite has been selected.

proxy.config.ssl.CA.cert.path
Scope
CONFIG
Type
STRING
Default
NULL

The location of the certificate authority file that client certificates will be verified against.

proxy.config.ssl.CA.cert.filename
Scope
CONFIG
Type
STRING
Default
NULL

The filename of the certificate authority that client certificates will be verified against.

proxy.config.ssl.server.ticket_key.filename
Scope
CONFIG
Type
STRING
Default
NULL

The filename of the default and global ticket key for SSL sessions. The location is relative to the proxy.config.ssl.server.cert.path directory. One way to generate this would be to run head -c48 /dev/urandom | openssl enc -base64 | head -c48 > file.ticket. Also note that OpenSSL session tickets are sensitive to the version of the ca-certificates. Once the file is changed with new tickets, use traffic_ctl config reload to begin using them.

proxy.config.ssl.servername.filename
Scope
CONFIG
Type
STRING
Default
sni.yaml
Deprecated
Yes

The filename of the sni.yaml configuration file. If relative, it is relative to the configuration directory.

proxy.config.ssl.max_record_size
Scope
CONFIG
Type
INT
Default
0

This configuration specifies the maximum number of bytes to write into a SSL record when replying over a SSL session. In some circumstances this setting can improve response latency by reducing buffering at the SSL layer. This setting can have a value between 0 and 16383 (max TLS record size).

The default of 0 means to always write all available data into a single SSL record.

A value of -1 means TLS record size is dynamically determined. The strategy employed is to use small TLS records that fit into a single TCP segment for the first ~1 MB of data, but, increase the record size to 16 KB after that to optimize throughput. The record size is reset back to a single segment after ~1 second of inactivity and the record size ramping mechanism is repeated again.

proxy.config.ssl.origin_session_cache
Scope
CONFIG
Type
INT
Default
1

This configuration enables the SSL session cache for the origin server when set to 1.

Setting to 0 disables SSL session cache for the origin server.

proxy.config.ssl.origin_session_cache.size
Scope
CONFIG
Type
INT
Default
10240

This configuration specifies the maximum number of entries the SSL session cache for the origin server may contain.

Setting a value less than or equal to 0 effectively disables SSL session cache for the origin server.

proxy.config.ssl.session_cache
Scope
CONFIG
Type
INT
Default
2

Enables the SSL session cache:

Value

Description

0

Disables the session cache entirely.

1

Enables the session cache using OpenSSL’s implementation.

2

Default. Enables the session cache using Traffic Server’s implementation. This implementation should perform much better than the OpenSSL implementation.

proxy.config.ssl.session_cache.timeout
Scope
CONFIG
Type
INT
Default
0

This configuration specifies the lifetime of SSL session cache entries in seconds. If it is 0, then the SSL library will use a default value, typically 300 seconds. Note: This option has no affect when using the Traffic Server session cache (option 2 in proxy.config.ssl.session_cache)

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.ssl.session_cache.auto_clear
Scope
CONFIG
Type
INT
Default
1

This will set the OpenSSL auto clear flag. Auto clear is enabled by default with 1 it can be disabled by changing this setting to 0.

proxy.config.ssl.session_cache.size
Scope
CONFIG
Type
INT
Default
102400

This configuration specifies the maximum number of entries the SSL session cache may contain.

proxy.config.ssl.session_cache.num_buckets
Scope
CONFIG
Type
INT
Default
256

This configuration specifies the number of buckets to use with the Traffic Server SSL session cache implementation. The TS implementation is a fixed size hash map where each bucket is protected by a mutex.

proxy.config.ssl.session_cache.skip_cache_on_bucket_contention
Scope
CONFIG
Type
INT
Default
0

This configuration specifies the behavior of the Traffic Server SSL session cache implementation during lock contention on each bucket:

Value

Description

0

Default. Don’t skip session caching when bucket lock is contented.

1

Disable the SSL session cache for a connection during lock contention.

proxy.config.ssl.server.session_ticket.enable
Scope
CONFIG
Type
INT
Default
1

Set to 1 to enable Traffic Server to process TLS tickets for TLS session resumption.

proxy.config.ssl.server.session_ticket.number
Scope
CONFIG
Type
INT
Default
2

This configuration control the number of TLSv1.3 session tickets that are issued. Take into account that setting the value to 0 will disable session caching for TLSv1.3 connections.

Lowering this setting to 1 can be interesting when proxy.config.ssl.session_cache is enabled because otherwise for every new TLSv1.3 connection two session IDs will be inserted in the session cache. On the other hand, if proxy.config.ssl.session_cache is disabled, using the default value is recommended. In those scenarios, increasing the number of tickets could be potentially beneficial for clients performing multiple requests over concurrent TLS connections as per RFC 8446 clients SHOULDN’T reuse TLS Tickets.

For more information see https://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_set_num_tickets.html [Requires OpenSSL v1.1.1 and higher]

proxy.config.ssl.hsts_max_age
Scope
CONFIG
Type
INT
Default
-1
Overridable
Yes

This configuration specifies the max-age value that will be used when adding the Strict-Transport-Security header. The value is in seconds. A value of 0 will set the max-age value to 0 and should remove the HSTS entry from the client. A value of -1 will disable this feature and not set the header. This option is only used for HTTPS requests and the header will not be set on HTTP requests.

proxy.config.ssl.hsts_include_subdomains
Scope
CONFIG
Type
INT
Default
0
Overridable
Yes

Enables (1) or disables (0) adding the includeSubdomain value to the Strict-Transport-Security header. proxy.config.ssl.hsts_max_age needs to be set to a non -1 value for this configuration to take effect.

proxy.config.ssl.allow_client_renegotiation
Scope
CONFIG
Type
INT
Default
0

This configuration specifies whether the client is able to initiate renegotiation of the SSL connection. The default of 0, means the client can’t initiate renegotiation.

proxy.config.ssl.cert.load_elevated
Scope
CONFIG
Type
INT
Default
0

Enables (1) or disables (0) elevation of traffic_server privileges during loading of SSL certificates. By enabling this, SSL certificate files’ access rights can be restricted to help reduce the vulnerability of certificates.

This feature requires Traffic Server to be built with POSIX capabilities enabled.

proxy.config.ssl.handshake_timeout_in
Scope
CONFIG
Type
INT
Default
0

When enabled this limits the total duration for the server side SSL handshake.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.ssl.keylog_file
Scope
CONFIG
Type
STRING
Default
NULL
Reloadable
Yes

If configured, TLS session keys for TLS connections will be logged to the specified file. This file is formatted in such a way that it can be conveniently imported into tools such as Wireshark to decrypt packet captures. This should only be used for debugging purposes since the data in the keylog file can be used to decrypt the otherwise encrypted traffic. A NULL value for this disables the feature.

This feature is disabled by default.

TLS v1.3 0-RTT Configuration

Note

TLS v1.3 must be enabled in order to utilize 0-RTT early data.

proxy.config.ssl.server.max_early_data
Scope
CONFIG
Type
INT
Default
0

Specifies the maximum amount of early data in bytes that is permitted to be sent on a single connection.

The minimum value that enables early data, and the suggested value for this option are both 16384 (16KB).

Setting to 0 effectively disables 0-RTT.

proxy.config.ssl.server.allow_early_data_params
Scope
CONFIG
Type
INT
Default
0

Set to 1 to allow HTTP parameters on early data requests.

SNI Routing

proxy.config.tunnel.activity_check_period
Scope
CONFIG
Type
INT
Default
0
Units
seconds

Frequency of checking the activity of SNI Routing Tunnel. Set to 0 to disable monitoring of the activity of the SNI tunnels. The feature is disabled by default.

proxy.config.tunnel.prewarm
Scope
CONFIG
Type
INT
Default
0

Enable Pre-warming TLS Tunnel. The feature is disabled by default.

proxy.config.tunnel.prewarm.max_stats_size
Scope
CONFIG
Type
INT
Default
100
proxy.config.tunnel.prewarm.algorithm
Scope
CONFIG
Type
INT
Default
2

Version of pre-warming algorithm.

Value

Description

1

Periodical pre-warming only

2

Event based pre-warming + Periodical pre-warming

proxy.config.tunnel.prewarm.event_period
Scope
CONFIG
Type
INT
Default
1000
Units
milliseconds

Frequency of periodical pre-warming in milli-seconds.

OCSP Stapling Configuration

proxy.config.ssl.ocsp.enabled
Scope
CONFIG
Type
INT
Default
0

Enable OCSP stapling.

Value

Description

0

Disables OCSP Stapling.

1

Allows Traffic Server to request SSL certificate revocation status from an OCSP responder.

proxy.config.ssl.ocsp.cache_timeout
Scope
CONFIG
Type
INT
Default
3600

Number of seconds before an OCSP response expires in the stapling cache.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.ssl.ocsp.request_timeout
Scope
CONFIG
Type
INT
Default
10

Timeout (in seconds) for queries to OCSP responders.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.ssl.ocsp.update_period
Scope
CONFIG
Type
INT
Default
60

Update period (in seconds) for stapling caches.

proxy.config.ssl.ocsp.response.path
Scope
CONFIG
Type
STRING
Default
NULL

The directory path of the prefetched OCSP stapling responses. Change this variable only if you intend to use and administratively maintain prefetched OCSP stapling responses. All stapling responses listed in ssl_multicert.config will be loaded relative to this path.

HTTP/2 Configuration

proxy.config.http2.max_concurrent_streams_in
Scope
CONFIG
Type
INT
Default
100
Reloadable
Yes

The maximum number of concurrent streams per inbound connection.

Note

Reloading this value affects only new HTTP/2 connections, not the ones already established.

proxy.config.http2.min_concurrent_streams_in
Scope
CONFIG
Type
INT
Default
10
Reloadable
Yes

The minimum number of concurrent streams per inbound connection. This is used when proxy.config.http2.max_active_streams_in is set larger than 0.

proxy.config.http2.max_active_streams_in
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Limits the maximum number of connection wide active streams. When connection wide active streams are larger than this value, SETTINGS_MAX_CONCURRENT_STREAMS will be reduced to proxy.config.http2.min_concurrent_streams_in. To disable, set to zero (0).

proxy.config.http2.initial_window_size_in
Scope
CONFIG
Type
INT
Default
65535
Reloadable
Yes

The initial window size for inbound connections.

proxy.config.http2.max_frame_size
Scope
CONFIG
Type
INT
Default
16384
Reloadable
Yes

Indicates the size of the largest frame payload that the sender is willing to receive.

proxy.config.http2.header_table_size
Scope
CONFIG
Type
INT
Default
4096
Reloadable
Yes

The maximum size of the header compression table used to decode header blocks. This value will be advertised as SETTINGS_HEADER_TABLE_SIZE.

proxy.config.http2.header_table_size_limit
Scope
CONFIG
Type
INT
Default
65536
Reloadable
Yes

The maximum size of the header compression table ATS actually use when ATS encodes headers. Setting 0 means ATS doesn’t insert headers into HPACK Dynamic Table, however, headers still can be encoded as indexable representations. The upper limit is 65536.

proxy.config.http2.max_header_list_size
Scope
CONFIG
Type
INT
Default
131072
Reloadable
Yes

This advisory setting informs a peer of the maximum size of header list that the sender is prepared to accept blocks. The default value, which is the unsigned int maximum value in Traffic Server, implies unlimited size.

proxy.config.http2.stream_priority_enabled
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Enable the experimental HTTP/2 Stream Priority feature.

proxy.config.http2.active_timeout_in
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

This is the active timeout of the http2 connection. It is set when the connection is opened and keeps ticking regardless of activity level.

The value of 0 specifies that there is no timeout.

proxy.config.http2.accept_no_activity_timeout
Scope
CONFIG
Type
INT
Default
120
Reloadable
Yes

Specifies how long Traffic Server keeps connections to clients open if no activity is received on the connection. Lowering this timeout can ease pressure on the proxy if misconfigured or misbehaving clients are opening a large number of connections without submitting requests.

proxy.config.http2.no_activity_timeout_in
Scope
CONFIG
Type
INT
Default
120
Reloadable
Yes

Specifies how long Traffic Server keeps connections to clients open if a transaction stalls. Lowering this timeout can ease pressure on the proxy if misconfigured or misbehaving clients are opening a large number of connections without submitting requests.

proxy.config.http2.zombie_debug_timeout_in
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

This timeout enables the zombie debugging feature. If it is non-zero, it sets a zombie event to go off that many seconds in the future when the HTTP2 session reaches one but not both of the terminating events, i.e received a close event (via client goaway or timeout) and the number of active streams has gone to zero. If the event is executed, the Traffic Server process will assert. This mechanism is useful to debug potential leaks in the HTTP2 Stream and Session processing.

proxy.config.http2.push_diary_size
Scope
CONFIG
Type
INT
Default
256
Reloadable
Yes

Indicates the maximum number of HTTP/2 server pushes that are remembered per HTTP/2 connection to avoid duplicate pushes on the same connection. If the maximum number is reached, new entries are not remembered.

proxy.config.http2.stream_error_rate_threshold
Scope
CONFIG
Type
FLOAT
Default
0.1
Reloadable
Yes

This is the maximum stream error rate Traffic Server allows on an HTTP/2 connection. Traffic Server gracefully closes connections that have stream error rates above this setting by sending GOAWAY frames.

proxy.config.http2.max_settings_per_frame
Scope
CONFIG
Type
INT
Default
7
Reloadable
Yes

Specifies how many settings in an HTTP/2 SETTINGS frame Traffic Server accepts. Clients exceeded this limit will be immediately disconnected with an error code of ENHANCE_YOUR_CALM.

proxy.config.http2.max_settings_per_minute
Scope
CONFIG
Type
INT
Default
14
Reloadable
Yes

Specifies how many settings in HTTP/2 SETTINGS frames Traffic Server accept for a minute. Clients exceeded this limit will be immediately disconnected with an error code of ENHANCE_YOUR_CALM.

proxy.config.http2.max_settings_frames_per_minute
Scope
CONFIG
Type
INT
Default
14
Reloadable
Yes

Specifies how many SETTINGS frames Traffic Server receives for a minute at maximum. Clients exceeded this limit will be immediately disconnected with an error code of ENHANCE_YOUR_CALM.

proxy.config.http2.max_ping_frames_per_minute
Scope
CONFIG
Type
INT
Default
60
Reloadable
Yes

Specifies how many number of PING frames Traffic Server receives for a minute at maximum. Clients exceeded this limit will be immediately disconnected with an error code of ENHANCE_YOUR_CALM.

proxy.config.http2.max_priority_frames_per_minute
Scope
CONFIG
Type
INT
Default
120
Reloadable
Yes

Specifies how many number of PRIORITY frames Traffic Server receives for a minute at maximum. Clients exceeded this limit will be immediately disconnected with an error code of ENHANCE_YOUR_CALM. If this is set to 0, the limit logic is disabled. This limit only will be enforced if proxy.config.http2.stream_priority_enabled is set to 1.

proxy.config.http2.min_avg_window_update
Scope
CONFIG
Type
FLOAT
Default
2560.0
Reloadable
Yes

Specifies the minimum average window increment Traffic Server allows. The average will be calculated based on the last 5 WINDOW_UPDATE frames. Clients that send smaller window increments lower than this limit will be immediately disconnected with an error code of ENHANCE_YOUR_CALM.

proxy.config.http2.write_buffer_block_size
Scope
CONFIG
Type
INT
Default
262144
Reloadable
Yes

Specifies the size of a buffer block that is used for buffering outgoing HTTP/2 frames. The size will be rounded up based on power of 2.

proxy.config.http2.write_size_threshold
Scope
CONFIG
Type
FLOAT
Default
0.5
Reloadable
Yes

Specifies the size threshold for triggering write operation for sending HTTP/2 frames. The default value is 0.5 and it measn write operation is going to be triggered when half or more of the buffer is occupied.

proxy.config.http2.write_time_threshold
Scope
CONFIG
Type
INT
Default
100
Units
milliseconds
Reloadable
Yes

Specifies the time threshold for triggering write operation for sending HTTP/2 frames. Write operation will be triggered at least once every this configured number of millisecond regardless of pending data size.

HTTP/3 Configuration

There is no configuration available yet on this release.

QUIC Configuration

All configurations for QUIC are still experimental and may be changed or removed in the future without prior notice.

proxy.config.quic.qlog_dir
Scope
CONFIG
Type
STRING
Default
NULL
Reloadable
Yes

The qlog is enabled when this configuration is not NULL. And will dump the qlog to this dir.

proxy.config.quic.instance_id
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

A static key used for calculating Stateless Reset Token. All instances in a cluster need to share the same value.

proxy.config.quic.connection_table.size
Scope
CONFIG
Type
INT
Default
65521

A size of hash table that stores connection information.

proxy.config.quic.proxy.config.quic.num_alt_connection_ids
Scope
CONFIG
Type
INT
Default
65521
Reloadable
Yes

A number of alternate Connection IDs that Traffic Server provides to a peer. It has to be at least 8.

proxy.config.quic.stateless_retry_enabled
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Enables Stateless Retry.

proxy.config.quic.client.vn_exercise_enabled
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Enables version negotiation exercise on origin server connections.

proxy.config.quic.client.cm_exercise_enabled
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Enables connection migration exercise on origin server connections.

proxy.config.quic.server.supported_groups
Scope
CONFIG
Type
STRING
Default
“P-256:X25519:P-384:P-521”
Reloadable
Yes

Configures the list of supported groups provided by OpenSSL which will be used to determine the set of shared groups on QUIC origin server connections.

proxy.config.quic.client.supported_groups
Scope
CONFIG
Type
STRING
Default
“P-256:X25519:P-384:P-521”
Reloadable
Yes

Configures the list of supported groups provided by OpenSSL which will be used to determine the set of shared groups on QUIC client connections.

proxy.config.quic.client.session_file
Scope
CONFIG
Type
STRING
Default
“”
Reloadable
Yes

Only available for traffic_quic. If specified, TLS session data will be stored to the file, and will be used for resuming a session.

proxy.config.quic.no_activity_timeout_in
Scope
CONFIG
Type
INT
Default
30000
Reloadable
Yes

This value will be advertised as idle_timeout Transport Parameter.

proxy.config.quic.no_activity_timeout_out
Scope
CONFIG
Type
INT
Default
30000
Reloadable
Yes

This value will be advertised as idle_timeout Transport Parameter.

proxy.config.quic.preferred_address_ipv4
Scope
CONFIG
Type
STRING
Default
“”
Reloadable
Yes

This value will be advertised as a part of preferred_address Transport Parameter.

proxy.config.quic.preferred_address_ipv6
Scope
CONFIG
Type
STRING
Default
“”
Reloadable
Yes

This value will be advertised as a part of preferred_address Transport Parameter.

proxy.config.quic.initial_max_data_in
Scope
CONFIG
Type
INT
Default
65536
Reloadable
Yes

This value will be advertised as initial_max_data Transport Parameter.

proxy.config.quic.initial_max_data_out
Scope
CONFIG
Type
INT
Default
65536
Reloadable
Yes

This value will be advertised as initial_max_data Transport Parameter.

proxy.config.quic.max_stream_data_bidi_local_in
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

This value will be advertised as initial_max_stream_data_bidi_local Transport Parameter.

proxy.config.quic.max_stream_data_bidi_local_out
Scope
CONFIG
Type
INT
Default
4096
Reloadable
Yes

This value will be advertised as initial_max_stream_data_bidi_local Transport Parameter.

proxy.config.quic.max_stream_data_bidi_remote_in
Scope
CONFIG
Type
INT
Default
4096
Reloadable
Yes

This value will be advertised as initial_max_stream_data_bidi_remote Transport Parameter.

proxy.config.quic.max_stream_data_bidi_remote_out
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

This value will be advertised as initial_max_stream_data_bidi_remote Transport Parameter.

proxy.config.quic.max_stream_data_uni_in
Scope
CONFIG
Type
INT
Default
4096
Reloadable
Yes

This value will be advertised as initial_max_stream_data_uni Transport Parameter.

proxy.config.quic.max_stream_data_uni_out
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

This value will be advertised as initial_max_stream_data_uni Transport Parameter.

proxy.config.quic.max_streams_bidi_in
Scope
CONFIG
Type
INT
Default
100
Reloadable
Yes

This value will be advertised as initial_max_streams_bidi Transport Parameter.

proxy.config.quic.max_streams_bidi_out
Scope
CONFIG
Type
INT
Default
100
Reloadable
Yes

This value will be advertised as initial_max_streams_bidi Transport Parameter.

proxy.config.quic.max_streams_uni_in
Scope
CONFIG
Type
INT
Default
100
Reloadable
Yes

This value will be advertised as initial_max_streams_uni Transport Parameter.

proxy.config.quic.max_streams_uni_out
Scope
CONFIG
Type
INT
Default
100
Reloadable
Yes

This value will be advertised as initial_max_streams_uni Transport Parameter.

proxy.config.quic.ack_delay_exponent_in
Scope
CONFIG
Type
INT
Default
3
Reloadable
Yes

This value will be advertised as ack_delay_exponent Transport Parameter.

proxy.config.quic.ack_delay_exponent_out
Scope
CONFIG
Type
INT
Default
3
Reloadable
Yes

This value will be advertised as ack_delay_exponent Transport Parameter.

proxy.config.quic.max_ack_delay_in
Scope
CONFIG
Type
INT
Default
25
Reloadable
Yes

This value will be advertised as max_ack_delay Transport Parameter.

proxy.config.quic.max_ack_delay_out
Scope
CONFIG
Type
INT
Default
25
Reloadable
Yes

This value will be advertised as max_ack_delay Transport Parameter.

proxy.config.quic.loss_detection.packet_threshold
Scope
CONFIG
Type
INT
Default
3
Reloadable
Yes

This is just for debugging. Do not change it from the default value unless you really understand what this is.

proxy.config.quic.loss_detection.time_threshold
Scope
CONFIG
Type
FLOAT
Default
1.25
Reloadable
Yes

This is just for debugging. Do not change it from the default value unless you really understand what this is.

proxy.config.quic.loss_detection.granularity
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes

This is just for debugging. Do not change it from the default value unless you really understand what this is.

proxy.config.quic.loss_detection.initial_rtt
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes

This is just for debugging. Do not change it from the default value unless you really understand what this is.

proxy.config.quic.congestion_control.max_datagram_size
Scope
CONFIG
Type
INT
Default
1200
Reloadable
Yes

This is just for debugging. Do not change it from the default value unless you really understand what this is.

proxy.config.quic.congestion_control.initial_window
Scope
CONFIG
Type
INT
Default
12000
Reloadable
Yes

This is just for debugging. Do not change it from the default value unless you really understand what this is.

proxy.config.quic.congestion_control.minimum_window
Scope
CONFIG
Type
INT
Default
2400
Reloadable
Yes

This is just for debugging. Do not change it from the default value unless you really understand what this is.

proxy.config.quic.congestion_control.loss_reduction_factor
Scope
CONFIG
Type
FLOAT
Default
0.5
Reloadable
Yes

This is just for debugging. Do not change it from the default value unless you really understand what this is.

proxy.config.quic.congestion_control.persistent_congestion_threshold
Scope
CONFIG
Type
INT
Default
2
Reloadable
Yes

This is just for debugging. Do not change it from the default value unless you really understand what this is.

Plug-in Configuration

proxy.config.plugin.plugin_dir
Scope
CONFIG
Type
STRING
Default
config/plugins

Specifies the location of Traffic Server plugins.

proxy.config.plugin.dynamic_reload_mode
Scope
CONFIG
Type
INT
Default
1

Enables (1) or disables (0) the dynamic reload feature for remap plugins (remap.config). Global plugins (plugin.config) do not have dynamic reload feature yet.

proxy.config.plugin.vc.default_buffer_index
Scope
CONFIG
Type
INT
Default
8
Reloadable
Yes
Overridable
Yes

Specifies the buffer index and thus size to use when constructing IO buffers within the PluginVC. Tuning this can impact performance of intercept plugins. Default is 8, which aligns with the default value of ts:cv:CONFIG proxy.config.http.default_buffer_size.

proxy.config.plugin.vc.default_buffer_water_mark
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes
Overridable
Yes

Specifies the buffer water mark size in bytes used to control the flow of data through IO buffers within the PluginVC. Default is zero to preserve existing PluginVC water marking behavior.

SOCKS Processor

proxy.config.socks.socks_needed
Scope
CONFIG
Type
INT
Default
0

Enables (1) or disables (0) the SOCKS processor

proxy.config.socks.socks_version
Scope
CONFIG
Type
INT
Default
4

Specifies the SOCKS version (4) or (5)

proxy.config.socks.socks_config_file
Scope
CONFIG
Type
STRING
Default
socks.config
Deprecated
Yes

The socks.config file allows you to specify ranges of IP addresses that will not be relayed to the SOCKS server. It can also be used to configure AUTH information for SOCKSv5 servers.

proxy.config.socks.socks_timeout
Scope
CONFIG
Type
INT
Default
100

The activity timeout value (in seconds) for SOCKS server connections.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.socks.server_connect_timeout
Scope
CONFIG
Type
INT
Default
10

The timeout value (in seconds) for SOCKS server connection attempts.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.socks.per_server_connection_attempts
Scope
CONFIG
Type
INT
Default
1

The total number of connection attempts allowed per SOCKS server, if multiple servers are used.

proxy.config.socks.connection_attempts
Scope
CONFIG
Type
INT
Default
4

The total number of connection attempts allowed to a SOCKS server Traffic Server bypasses the server or fails the request

proxy.config.socks.server_retry_timeout
Scope
CONFIG
Type
INT
Default
300

The timeout value (in seconds) for SOCKS server connection retry attempts.

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.socks.default_servers
Scope
CONFIG
Type
STRING
Default
*NONE*

Default list of SOCKS servers and their ports.

proxy.config.socks.server_retry_time
Scope
CONFIG
Type
INT
Default
300

The amount of time allowed between connection retries to a SOCKS server that is unavailable.

proxy.config.socks.server_fail_threshold
Scope
CONFIG
Type
INT
Default
2

The number of times the connection to the SOCKS server can fail before Traffic Server considers the server unavailable.

proxy.config.socks.accept_enabled
Scope
CONFIG
Type
INT
Default
0

Enables (1) or disables (0) the SOCKS proxy option. As a SOCKS proxy, Traffic Server receives SOCKS traffic (usually on port 1080) and forwards all requests directly to the SOCKS server.

proxy.config.socks.accept_port
Scope
CONFIG
Type
INT
Default
1080

Specifies the port on which Traffic Server accepts SOCKS traffic.

proxy.config.socks.http_port
Scope
CONFIG
Type
INT
Default
80

Specifies the port on which Traffic Server accepts HTTP proxy requests over SOCKS connections..

Sockets

proxy.config.net.defer_accept
Scope
CONFIG
Type
INT
Default
1

default: 1 meaning on all Platforms except Linux: 45 seconds

This directive enables operating system specific optimizations for a listening socket. defer_accept holds a call to accept(2) back until data has arrived. In Linux’ special case this is up to a maximum of 45 seconds. On FreeBSD, accf_data module needs to be loaded.

proxy.config.net.listen_backlog
Scope
CONFIG
Type
INT
Default
-1 :reloadable:

This directive sets the maximum number of pending connections. If it is set to -1, Traffic Server will automatically set this to a platform-specific maximum.

proxy.config.net.tcp_congestion_control_in
Scope
CONFIG
Type
STRING
Default
“”

This directive will override the congestion control algorithm for incoming connections (accept sockets). On Linux, the allowed values are typically specified in a space separated list in /proc/sys/net/ipv4/tcp_allowed_congestion_control

proxy.config.net.tcp_congestion_control_out
Scope
CONFIG
Type
STRING
Default
“”

This directive will override the congestion control algorithm for outgoing connections (connect sockets). On Linux, the allowed values are typically specified in a space separated list in /proc/sys/net/ipv4/tcp_allowed_congestion_control

proxy.config.net.sock_send_buffer_size_in
Scope
CONFIG
Type
INT
Default
0

Sets the send buffer size for connections from the client to Traffic Server.

proxy.config.net.sock_recv_buffer_size_in
Scope
CONFIG
Type
INT
Default
0

Sets the receive buffer size for connections from the client to Traffic Server.

proxy.config.net.sock_option_flag_in
Scope
CONFIG
Type
INT
Default
0x5

Turns different options “on” for the socket handling client connections::

TCP_NODELAY  (1)
SO_KEEPALIVE (2)
SO_LINGER (4) - with a timeout of 0 seconds
TCP_FASTOPEN (8)
PACKET_MARK (16)
PACKET_TOS (32)
TCP_NOTSENT_LOWAT (64)

Note

This is a bitmask and you need to decide what bits to set. Therefore, you must set the value to 3 if you want to enable nodelay and keepalive options above.

Note

To allow TCP Fast Open for client sockets on Linux, bit 2 of the net.ipv4.tcp_fastopen sysctl must be set.

proxy.config.net.sock_send_buffer_size_out
Scope
CONFIG
Type
INT
Default
0
Overridable
Yes

Sets the send buffer size for connections from Traffic Server to the origin server.

proxy.config.net.sock_recv_buffer_size_out
Scope
CONFIG
Type
INT
Default
0
Overridable
Yes

Sets the receive buffer size for connections from Traffic Server to the origin server.

proxy.config.net.sock_option_flag_out
Scope
CONFIG
Type
INT
Default
0x1
Overridable
Yes

Turns different options “on” for the origin server socket::

TCP_NODELAY  (1)
SO_KEEPALIVE (2)
SO_LINGER (4) - with a timeout of 0 seconds
TCP_FASTOPEN (8)
PACKET_MARK (16)
PACKET_TOS (32)
TCP_NOTSENT_LOWAT (64)

Note

This is a bitmask and you need to decide what bits to set. Therefore, you must set the value to 3 if you want to enable nodelay and keepalive options above.

When SO_LINGER is enabled, the linger timeout time is set to 0. This is useful when Traffic Server and the origin server are co-located and large numbers of sockets are retained in the TIME_WAIT state.

Note

To allow TCP Fast Open for server sockets on Linux, bit 1 of the net.ipv4.tcp_fastopen sysctl must be set.

proxy.config.net.sock_mss_in
Scope
CONFIG
Type
INT
Default
0

Same as the command line option --accept_mss that sets the MSS for all incoming requests.

proxy.config.net.sock_packet_mark_in
Scope
CONFIG
Type
INT
Default
0x0

Set the packet mark on traffic destined for the client (the packets that make up a client response).

See also

Traffic Shaping

proxy.config.net.sock_packet_mark_out
Scope
CONFIG
Type
INT
Default
0x0
Overridable
Yes

Set the packet mark on traffic destined for the origin (the packets that make up an origin request).

See also

Traffic Shaping

proxy.config.net.sock_packet_tos_in
Scope
CONFIG
Type
INT
Default
0x0

Set the ToS/DiffServ Field on packets sent to the client (the packets that make up a client response).

See also

Traffic Shaping

proxy.config.net.sock_packet_tos_out
Scope
CONFIG
Type
INT
Default
0x0
Overridable
Yes

Set the ToS/DiffServ Field on packets sent to the origin (the packets that make up an origin request).

See also

Traffic Shaping

proxy.config.net.sock_notsent_lowat
Scope
CONFIG
Type
INT
Default
16384
Overridable
Yes

Set socket option TCP_NOTSENT_LOWAT to specified value for a connection

proxy.config.net.poll_timeout
Scope
CONFIG
Type
INT
Default
10 (or 30 on Solaris)

Same as the command line option --poll_timeout, or -t, which specifies the timeout used for the polling mechanism used. This timeout is always in milliseconds (ms). This is the timeout to epoll_wait() on Linux platforms, and to kevent() on BSD type OSs. The default value is 10 on all platforms.

Changing this configuration can reduce CPU usage on an idle system, since periodic tasks gets processed at these intervals. On busy servers, this overhead is diminished, since polled events triggers more frequently. However, increasing the setting can also introduce additional latency for certain operations, and timed events. It’s recommended not to touch this setting unless your CPU usage is unacceptable at idle workload. Some alternatives to this could be:

Reduce the number of worker threads (net-threads)
Reduce the number of disk (AIO) threads

Make sure accept threads are enabled

The relevant configurations for this are:

CONFIG proxy.config.exec_thread.autoconfig INT 0
CONFIG proxy.config.exec_thread.limit INT 2
CONFIG proxy.config.accept_threads INT 1
CONFIG proxy.config.cache.threads_per_disk INT 8

See Timeout Settings for more discussion on Traffic Server timeouts.

proxy.config.task_threads
Scope
CONFIG
Type
INT
Default
2

Specifies the number of task threads to run. These threads are used for various tasks that should be off-loaded from the normal network threads. You must have at least one task thread available.

proxy.config.allocator.thread_freelist_size
Scope
CONFIG
Type
INT
Default
512

Sets the maximum number of elements that can be contained in a ProxyAllocator (per-thread) before returning the objects to the global pool. If set to 0, there is no limit enforced.

proxy.config.allocator.thread_freelist_low_watermark
Scope
CONFIG
Type
INT
Default
32

Sets the minimum number of items a ProxyAllocator (per-thread) will guarantee to be holding at any one time.

proxy.config.allocator.hugepages
Scope
CONFIG
Type
INT
Default
0

Enable (1) the use of huge pages on supported platforms. (Currently only Linux)

You must also enable hugepages at the OS level. In modern Linux kernels, this can be done by setting /proc/sys/vm/nr_overcommit_hugepages to a sufficiently large value. It is reasonable to use (system memory/hugepage size) because these pages are only created on demand.

For more information on the implications of enabling huge pages, see Wikipedia <http://en.wikipedia.org/wiki/Page_%28computer_memory%29#Page_size_trade-off>_.

proxy.config.dump_mem_info_frequency
Scope
CONFIG
Type
INT
Default
0
Reloadable
Yes

Enable <value>. When enabled makes Traffic Server dump IO Buffer memory information to traffic.out at <value> (intervals are in seconds). A zero value implies it is disabled

proxy.config.res_track_memory
Scope
CONFIG
Type
INT
Default
0

When enabled makes Traffic Server track memory usage (allocations and releases). This information is dumped to traffic.out when the user sends a SIGUSR1 signal or periodically when proxy.config.dump_mem_info_frequency is enabled.

Value

Description

0

Memory tracking Disabled

1

Tracks IO Buffer Memory allocations and releases

2

Tracks IO Buffer Memory and OpenSSL Memory allocations and releases

proxy.config.allocator.dontdump_iobuffers
Scope
CONFIG
Type
INT
Default
1

Enable (1) the exclusion of IO buffers from core files when ATS crashes on supported platforms. (Currently only Linux). IO buffers are allocated with the MADV_DONTDUMP with madvise() on Linux platforms that support MADV_DONTDUMP. Enabled by default.

proxy.config.ssl.misc.io.max_buffer_index
Scope
CONFIG
Type
INT
Default
8

Configures the max IOBuffer Block index used for various SSL Operations such as Handshake or Protocol Probe. Default value is 8 which maps to a 32K buffer

proxy.config.hostdb.io.max_buffer_index
Scope
CONFIG
Type
INT
Default
8

Configures the max IOBuffer Block index used for storing HostDB records. Default value is 8 which maps to a 32K buffer

proxy.config.payload.io.max_buffer_index
Scope
CONFIG
Type
INT
Default
8

Configures the max IOBuffer Block index used for storing request payload buffer for a POST request. Default value is 8 which maps to a 32K buffer

proxy.config.msg.io.max_buffer_index
Scope
CONFIG
Type
INT
Default
8

Configures the max IOBuffer Block index used for storing miscellaneous transactional buffers such as error response body. Default value is 8 which maps to a 32K buffer

proxy.config.log.io.max_buffer_index
Scope
CONFIG
Type
INT
Default
8

Configures the max IOBuffer Block index used for storing an access log entry. Default value is 8 which maps to a 32K buffer

proxy.config.http.enabled
Scope
CONFIG
Type
INT
Default
1

Turn on or off support for HTTP proxying. This is rarely used, the one exception being if you run Traffic Server with a protocol plugin, and would like for it to not support HTTP requests at all.

proxy.config.http.allow_half_open
Scope
CONFIG
Type
INT
Default
1
Reloadable
Yes
Overridable
Yes

Turn on or off support for connection half open for client side. Default is on, so after client sends FIN, the connection is still there.

proxy.config.http.wait_for_cache
Scope
CONFIG
Type
INT
Default
0

Accepting inbound connections and starting the cache are independent operations in Traffic Server. This variable controls the relative timing of these operations and Traffic Server dependency on cache because if cache is required then inbound connection accepts should be deferred until the validity of the cache requirement is determined. Cache initialization failure will be logged in diags.log.

Value

Description

0

Decouple inbound connections and cache initialization. Connections will be accepted as soon as possible and Traffic Server will run regardless of the results of cache initialization.

1

Do not accept inbound connections until cache initialization has finished. Traffic Server will run regardless of the results of cache initialization.

2

Do not accept inbound connections until cache initialization has finished and been sufficiently successful that cache is enabled. This means at least one cache span is usable. If there are no spans in storage.config or none of the spans can be successfully parsed and initialized then Traffic Server will shut down.

3

Do not accept inbound connections until cache initialization has finished and been completely successful. This requires at least one cache span in storage.config and that every span specified is valid and successfully initialized. Any error will cause Traffic Server to shut down.