Escalate Plugin

The Escalate plugin allows Traffic Server to try an alternate origin when the origin server in the remap rule is either unavailable or returns specific HTTP error codes. Some services call this failover or fail-action.

Plugin Configuration

The escalate plugin is a remap plugin (not global) and takes a parameter with two delimited fields: comma-separated-error-codes:secondary-origin-server. For instance,

@pparam=401,404,410,502:second-origin.example.com

would have Traffic Server send a cache miss to second-origin.example.com when the origin server in the remap rule returns a 401, 404, 410, or 502 error code.

@pparam=--pristine

This option sends the "pristine" Host: header (eg, the Host: header that the client sent) to the escalated request.

@pparam=--no-redirect-header

Controls whether to add the x-escalate-redirect header to escalated requests. When enabled (default), the plugin adds an x-escalate-redirect header with value "1" to the client request when it escalates to a different origin server. This header can be used by downstream systems to identify requests that have been escalated. The header is only added if it doesn't already exist in the request. Use --no-redirect-header to disable adding the x-escalate-redirect header.

@pparam=--escalate-non-get-methods

In general, the escalate plugin is used with a failover origin that serves a cached backup of the original content. As a result, the default behavior is to only escalate GET requests since POST, PUT, etc., are not idempotent and may require side effects that are not supported by a failover origin. This option overrides the default behavior and enables escalation for non-GET requests in addition to GET.

Installation

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

Example

With this line in remap.config

map cdn.example.com origin.example.com \
  @plugin=escalate.so @pparam=401,404,410,502:second-origin.example.com @pparam=--pristine

Traffic Server would accept a request for cdn.example.com and, on a cache miss, proxy the request to origin.example.com. If the response code from that server is a 401, 404, 410, or 502, then Traffic Server would proxy the request to second-origin.example.com, using a Host: header of cdn.example.com. Additionally, an x-escalate-redirect header with value "1" will be added to the escalated request.

To disable adding the x-escalate-redirect header, use:

map cdn.example.com origin.example.com \
  @plugin=escalate.so @pparam=401,404,410,502:second-origin.example.com @pparam=--no-redirect-header

By default, only GET requests are escalated. To escalate non-GET requests as well, you can use:

map cdn.example.com origin.example.com \
  @plugin=escalate.so @pparam=401,404,410,502:second-origin.example.com @pparam=--escalate-non-get-methods