Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Summary

Some ATS destination

...

'properties'

...

would

...

like

...

to

...

return

...

custom/meaningful

...

error

...

pages

...

to

...

users

...

in

...

the

...

event

...

of

...

a

...

failure

...

in

...

dependent

...

services

...

(i.e.

...

ATS

...

cannot

...

connect

...

to

...

origin

...

server).

...

For

...

example,

...

if

...

ATS

...

cannot

...

connect

...

to

...

Flickr’s

...

services,

...

they

...

may

...

want

...

to

...

return

...

the

...

“Bad

...

Panda”

...

page

...

to

...

the

...

user

...

http://www.flickr.com/badpanda.html

...

.

Requirements

Since ATS is used to front many different 'properties'

...

via

...

reverse

...

proxy

...

operation,

...

the

...

specification

...

for

...

what

...

to

...

return

...

to

...

users

...

in

...

the

...

event

...

of

...

an

...

error

...

must

...

be

...

done

...

on

...

a

...

per

...

remap

...

basis.

...

ATS

...

already

...

supports

...

custom

...

error

...

pages

...

globally

...

on

...

a

...

per-language

...

basis

...

but

...

not

...

on

...

a

...

per

...

remap

...

basis.

...

What is an error?

For the purposes of this document, an error is any error (4xx-5xx)

...

that

...

is

...

detected/generated

...

by

...

ATS.

...

This

...

includes

...

errors

...

detected

...

during

...

remapping

...

(404)

...

and

...

connection

...

errors

...

related

...

to

...

connecting

...

to

...

the

...

origin

...

(5xx)

...

errors.

...

Not

...

covered

...

as

...

errors

...

are

...

4xx-5xx

...

responses

...

which

...

are

...

returned

...

from

...

the

...

origin.

...

Configuration

Configuration of the global plugin is done via a single configuration file (specified in plugin.config as the only parameter to the plugin) which contains named sections. Remap rules must reference a named section to apply that configuration to the remap rule. Remap line will identify the plugin and pass a single parameter which is the name of the section. Example:

regex_map http://(.*\.)?flickr\.com/

...

http://real.flickr.com/

...

Image Added @plugin=custom_error.so

...

@pparam=flickr

...

Config

...

File

...

The

...

configuration

...

file

...

for

...

the

...

custom

...

error

...

plugin

...

is

...

a

...

simple

...

text

...

file

...

containing

...

named

...

sections

...

which

...

map

...

from

...

error

...

code(s)

...

to

...

the

...

error

...

content(s)

...

with

...

a

...

single

...

mapping

...

per

...

line

...

and

...

optional

...

language

...

and

...

character

...

set

...

information

...

for

...

the

...

content.

...

Example:

...


#error

...

code

...

content
name default
500 /usr/local/error_conf/global_500.txt

...

name flickr
500 /usr/local/error_conf/500.txt

...


501 http://xyz.com/501.txt

...

Image Added
503-546

...

./546.txt

...


Content-Language

...

kr

...


Content-Charset

...

iso-2022-kr

...

The

...

default

...

section,

...

if

...

present,

...

will

...

apply

...

to

...

errors

...

which

...

are

...

not

...

“overridden”

...

by

...

a

...

remap

...

rule.

...

Error Code

The error code may be a single HTTP error code or a range of codes.

Error Content

The error content is either a static (local) HTML file OR is an external HTML object which the plugin can retrieve via HTTP. Error content references may also include the following replacement variables:
%{host} - Value of the host header (post remap value)
%{path} - Path from the URL (post remap value)
%{scheme} - Scheme of client connection (http or https)
%{port} - Port number of client connection.

Language

In order to indicate to the client what language and character set the error content is made up of, the plugin supports setting the value of the returned Content-Language and Content-Charset headers. If not specified, the default is assumed (English text in standard utf-8 character set.). For external HTML objects, the plugin will forward all request headers to the external server so that it can determine the proper language for the returned content.

Mis-configuration

If the specified HTML error object is not found, either due to the file not existing or a request on the external HTML object fails with a 404 error, the client will be returned the ATS 404 error body (as defined by the ATS body factory). Additionally, an error will be logged with enough detail to help diagnose the issue (e.g. “Couldn't find file 'xx.txt' on line y of config file z.”).

If a request for an external HTML object fails, an ATS default error body will be returned to the client. Additionally, an error will be logged with enough detail to help diagnose the issue (e.g. “Error 502 while requesting http://flickr.com/badpanda.jpg

...

Image Added as

...

configured

...

on

...

line

...

y

...

of

...

config

...

file

...

z.”).

...

Function

Upon detection of an error (as described above) the plugin will return the specified ‘error content’. If the error code is NOT configured, then the default/global behavior of ATS will prevail.

When returning a static file, the plugin will include Content-Language and Content-Charset headers in the response to the client as they are specified in the config file. If they are not specified, then the response will not include them.