Configuration Remap Plugin

This plugin allows you to override configuration directives dependent on remapping rules.

Purpose

Traffic Server provides a plethora of configuration options, but specifying the values of those options in records.yaml is global. All requests, regardless of the cache object or its origin, will be evaluated within the same collection of settings. Sometimes you may want Traffic Server to behave differently for portions of your cache.

Perhaps you have Negative Response Caching enabled, but you wish to greatly reduce the validity times for just one of your origin servers while allowing the rest of your origins to have their errors cached for long durations.

Or maybe you make use of Heuristic Expiration but require different fuzz times for various objects because of the nature of their content and expected lifetimes.

Any configuration directive which is overridable can be modified on a per-map basis with this plugin. This opens up a level of flexibility in your configurations for effectively managing and caching content with varied needs, without having to resort to multiple Traffic Server instances.

Installation

This plugin is considered stable and is included with Traffic Server by default. There are no special steps necessary for its installation.

Configuration

Configuration of this plugin is performed alongside the actual remapping rules which trigger the desired configuration directive changes. There are two methods available for specifying the actual directives and their modified values.

Inline Directives

In cases where you have very few remapping rules which modify directives, and they are modifying only a small number of directives, you may find it easiest to simply specify those directive changes in-line with your remapping rules. This is done by specifying key = value pairs, where the key is the configuration directive name and the value is its desired setting for the remapping rule.

For example, the enable proxy.config.url_remap.pristine_host_hdr for a single map rule, you would add the following to your remap.config:

map http://cdn.example.com/ http://origin.example.com/ \
    @plugin=conf_remap.so @pparam=proxy.config.url_remap.pristine_host_hdr=1

External Configuration

There may be situations in which you have many directives you wish to modify, or where multiple remapping rules perform the same directive changes. External configurations can simplify management of these rules, and help to reduce the possibility of transcription errors, or keeping all the directive settings in sync across all the remapping rules over time.

Instead of specifying the directives and their values in remap.config as you do with the in-line method, you place all the affected directives in a separate YAML file. The location and name is entirely up to you, but we'll use /etc/trafficserver/cdn_conf_remap.yaml here. The contents of this file should mirror how configuration directives are written in records.yaml:

records:
  url_remap:
    pristine_host_hdr: 1

Your remap.config will then contain remapping rules that point to this external file:

map http://cdn.example.com/ http://some-server.example.com \
    @plugin=conf_remap.so @pparam=/etc/trafficserver/cdn_conf_remap.yaml

Your external configuration may contain as many directives as you wish.

Caveats

This plugin can only modify the values for those configuration directives which are overridable, meaning they are not fixed upon Traffic Server startup. While this generally shouldn't prove too onerous a restriction, you should consult the individual directives' documentation to confirm whether they may be overridden.

Further Reading

For more information about the implementation of overridable configuration directives, you may consult the developer's documentation for TSHttpOverridableConfig.

Also if moving from a legacy config format, please have a look at Converting records.config to records.yaml.