-
-
Notifications
You must be signed in to change notification settings - Fork 4.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
…#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 <[email protected]> * caddyhttp: Reorganize response matchers * reverseproxy: Reintroduce caddyfile.Unmarshaler * reverseproxy: Add comment mentioning Finalize should be called Co-authored-by: Maxime Soulé <[email protected]> Co-authored-by: Matt Holt <[email protected]>
- Loading branch information
1 parent
e6f6d3a
commit e4a22de
Showing
10 changed files
with
635 additions
and
253 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
193 changes: 193 additions & 0 deletions
193
caddytest/integration/caddyfile_adapt/reverse_proxy_handle_response.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,193 @@ | ||
: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" | ||
} | ||
] | ||
} | ||
] | ||
} | ||
] | ||
} | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.