0
Fork 0
mirror of https://github.com/caddyserver/caddy.git synced 2025-01-06 22:40:31 -05:00
caddy/caddytest/integration/caddyfile_adapt/reverse_proxy_handle_response.txt
Francis Lavoie e4a22de9d1
reverseproxy: Add handle_response blocks to reverse_proxy (#3710) (#4021)
* reverseproxy: Add `handle_response` blocks to `reverse_proxy` (#3710)

* reverseproxy: complete handle_response test

* reverseproxy: Change handle_response matchers to use named matchers

reverseproxy: Add support for changing status code

* fastcgi: Remove obsolete TODO

We already have d.Err("transport already specified") in the reverse_proxy parsing code which covers this case

* reverseproxy: Fix support for "4xx" type status codes

* Apply suggestions from code review

Co-authored-by: Matt Holt <mholt@users.noreply.github.com>

* caddyhttp: Reorganize response matchers

* reverseproxy: Reintroduce caddyfile.Unmarshaler

* reverseproxy: Add comment mentioning Finalize should be called

Co-authored-by: Maxime Soulé <btik-git@scoubidou.com>
Co-authored-by: Matt Holt <mholt@users.noreply.github.com>
2021-05-02 12:39:06 -06:00

3.4 KiB

:8884

reverse_proxy 127.0.0.1:65535 { @accel header X-Accel-Redirect * handle_response @accel { respond "Header X-Accel-Redirect!" }

@another {
	header X-Another *
}
handle_response @another {
	respond "Header X-Another!"
}

@401 status 401
handle_response @401 {
	respond "Status 401!"
}

handle_response {
	respond "Any! This should be last in the JSON!"
}

@403 {
	status 403
}
handle_response @403 {
	respond "Status 403!"
}

@multi {
	status 401 403
	status 404
	header Foo *
	header Bar *
}
handle_response @multi {
	respond "Headers Foo, Bar AND statuses 401, 403 and 404!"
}

@changeStatus status 500
handle_response @changeStatus 400

}

{ "apps": { "http": { "servers": { "srv0": { "listen": [ ":8884" ], "routes": [ { "handle": [ { "handle_response": [ { "match": { "headers": { "X-Accel-Redirect": [ "" ] } }, "routes": [ { "handle": [ { "body": "Header X-Accel-Redirect!", "handler": "static_response" } ] } ] }, { "match": { "headers": { "X-Another": [ "" ] } }, "routes": [ { "handle": [ { "body": "Header X-Another!", "handler": "static_response" } ] } ] }, { "match": { "status_code": [ 401 ] }, "routes": [ { "handle": [ { "body": "Status 401!", "handler": "static_response" } ] } ] }, { "match": { "status_code": [ 403 ] }, "routes": [ { "handle": [ { "body": "Status 403!", "handler": "static_response" } ] } ] }, { "match": { "headers": { "Bar": [ "" ], "Foo": [ "" ] }, "status_code": [ 401, 403, 404 ] }, "routes": [ { "handle": [ { "body": "Headers Foo, Bar AND statuses 401, 403 and 404!", "handler": "static_response" } ] } ] }, { "match": { "status_code": [ 500 ] }, "status_code": 400 }, { "routes": [ { "handle": [ { "body": "Any! This should be last in the JSON!", "handler": "static_response" } ] } ] } ], "handler": "reverse_proxy", "upstreams": [ { "dial": "127.0.0.1:65535" } ] } ] } ] } } } } }