_VARS:
- &LISTEN ${listen_address}
- &DEBUG_ROUTING ${debug_routing}
- &PROXY_ADDRESS ${proxy_address}
- &SPOOL_ADDRESS1 ${spool_address1}
- &SPOOL_ADDRESS2 ${spool_address2}
- &SPOOL_ADDRESS3 ${spool_address3}
- &SPOOL_ADDRESS4 ${spool_address4}
- &REPLICATION_LISTEN ${replication_listen_address}
- &REPLICATION_PEER ${replication_peer_address}
listen:
- *LISTEN
# These are defaults
#
# max_connections: 1000
# pipeline_depth: 2
# listen_error_timeout: 100ms
server_name: swindon/func-tests
debug-routing: *DEBUG_ROUTING
# Configure all possible routing?
routing:
### !EmptyGif routes ###
localhost/empty.gif: empty_gif
localhost/empty-w-headers.gif: empty_gif_w_headers
localhost/empty-w-content-length.gif: empty_gif_w_clen
### !SingleFile routes ###
localhost/static-file: single_file
localhost/missing-file: missing_file
localhost/no-permission: no_permission
localhost/static-file-headers: extra_headers
localhost/symlink: single_symlink
localhost/dev-null: dev_null
### !Static routes ###
localhost/static: static
localhost/static-w-headers: static_w_headers
localhost/static-w-ctype: static_w_ctype
localhost/static-w-hostname: static_w_hostname
localhost/static-w-index: static_w_index
localhost/static-wo-index: static_wo_index
### !VersionedStatic routes ###
localhost/versioned: versioned
localhost/versioned-fallback: versioned-fallback
# TODO: add overlapping routes:
# /static: !Proxy & /static/file: !SingleFile
### !Proxy routes ###
localhost/proxy: proxy
localhost/proxy-w-prefix: proxy_w_prefix
localhost/proxy-w-ip-header: proxy_w_ip_header
localhost/proxy-w-request-id: proxy_w_request_id
### !SwindonLattice routes ###
localhost/swindon-lattice: swindon_lattice
localhost/swindon-lattice-w-timeouts: swindon_lattice_w_timeouts
### !WebsocketEcho routes ###
localhost/websocket-echo: websocket_echo
### !BaseRedirect routes ###
example.com: base_redirect
### !StripWWWRedirect routes ###
www.example.com: strip_www_redirect
### !Authorized routes ###
localhost/auth/local: empty_gif @only-127-0-0-1
localhost/auth/by-header: empty_gif @by-header
# Configure all possible handlers?
handlers:
# Allowed handlers are: SwindonLattice, Static, SingleFile, Proxy,
# EmptyGif, HttpBin, WebsocketEcho;
### EmptyGif handlers ###
empty_gif: !EmptyGif
empty_gif_w_headers: !EmptyGif
extra-headers:
X-Some-Header: some value
empty_gif_w_clen: !EmptyGif
extra-headers:
Content-Type: image/other
Content-Length: 100500
### SingleFile handlers ###
single_file: !SingleFile
path: ${TESTS_DIR}/assets/static_file.txt
content-type: text/plain
missing_file: !SingleFile
path: ${TESTS_DIR}/assets/missing_file.txt
content-type: text/is/missing
no_permission: !SingleFile
path: /tmp/no-permission.txt
content-type: text/no/permission
extra_headers: !SingleFile
path: ${TESTS_DIR}/assets/static_file.txt
content-type: text/plain
extra-headers:
X-Extra-Header: "extra value"
X-Bad-Header: "bad header\r\n"
single_symlink: !SingleFile
path: ${TESTS_DIR}/assets/link.txt
content-type: text/plain
dev_null: !SingleFile
path: /dev/null
content-type: text/plain
### Static handlers ###
static: !Static
path: ${TESTS_DIR}/assets/
static_w_headers: !Static
path: ${TESTS_DIR}/assets/
extra-headers:
X-Some-Header: some value
static_w_ctype: !Static
path: ${TESTS_DIR}/assets/
extra-headers:
Content-Type: something/other
static_w_hostname: !Static
mode: with_hostname
path: ${TESTS_DIR}/assets/
static_w_index: !Static
path: ${TESTS_DIR}/assets/index
index-files:
- index.html
static_wo_index: !Static
path: ${TESTS_DIR}/assets/index
versioned: !VersionedStatic
versioned-root: ${TESTS_DIR}/hashed
plain-root: ${TESTS_DIR}/assets
version-arg: "r"
version-split: [2, 6]
version-chars: lowercase_hex
fallback-to-plain: never
versioned-fallback: !VersionedStatic
versioned-root: ${TESTS_DIR}/hashed
plain-root: ${TESTS_DIR}/assets
version-arg: "r"
version-split: [2, 6]
version-chars: lowercase_hex
fallback-to-plain: always
### Proxy handlers ###
proxy: !Proxy
destination: proxy_dest/
proxy_w_prefix: !Proxy
destination: proxy_dest/prefix
proxy_w_ip_header: !Proxy
destination: proxy_dest
ip-header: X-Some-Header
proxy_w_request_id: !Proxy
destination: proxy_dest
request-id-header: X-Request-Id
swindon_proxy: !Proxy
destination: swindon_http_dest
### SwindonLattice handlers ###
swindon_lattice: !SwindonLattice
session_pool: swindon_pool
http_route: swindon_proxy
message_handlers:
"*": swindon_lattice_dest/
prefixed.*: swindon_lattice_dest/with-prefix
swindon_lattice_w_timeouts: !SwindonLattice
session_pool: pool_w_timeouts
message_handlers:
"*": swindon_lattice_dest/
### WebsocketEcho handlers ###
websocket_echo: !WebsocketEcho
### BaseRedirect handler ###
base_redirect: !BaseRedirect
redirect-to-domain: localhost
### StripWWWRedirect handler
strip_www_redirect: !StripWWWRedirect
session-pools:
swindon_pool:
listen:
- *SPOOL_ADDRESS3
inactivity_handlers:
- swindon_lattice_dest/
### defaults: ###
# pipeline_depth: 2
# max_connections: 1000
# listen_error_timeout: 100ms
# max_payload_size: 10485760
pool_w_timeouts:
listen:
- *SPOOL_ADDRESS4
inactivity_handlers:
- swindon_lattice_dest
new_connection_idle_timeout: 1s
client_min_idle_timeout: 1s
client_max_idle_timeout: 10s
http-destinations:
### Proxy destintations ###
proxy_dest:
addresses:
- *PROXY_ADDRESS
### SwindonLattice destinations ###
swindon_http_dest:
addresses:
- *PROXY_ADDRESS
swindon_lattice_dest:
override-host-header: swindon.internal
addresses:
- *PROXY_ADDRESS
authorizers:
only-127-0-0-1: !SourceIp
allowed-network: only-127-0-0-1
by-header: !SourceIp
allowed-network: goog
forwarded-ip-header: X-Real-Ip
accept-forwarded-headers-from: only-127-0-0-1
networks:
only-127-0-0-1:
- 127.0.0.1
goog:
- 8.0.0.0/8
replication:
listen:
- *REPLICATION_LISTEN
peers:
- *REPLICATION_PEER