mirror of https://github.com/caddyserver/caddy
278 lines
5.1 KiB
Plaintext
278 lines
5.1 KiB
Plaintext
:8884
|
|
|
|
reverse_proxy 127.0.0.1:65535 {
|
|
@500 status 500
|
|
replace_status @500 400
|
|
|
|
@all status 2xx 3xx 4xx 5xx
|
|
replace_status @all {http.error.status_code}
|
|
|
|
replace_status {http.error.status_code}
|
|
|
|
@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!"
|
|
}
|
|
|
|
@200 status 200
|
|
handle_response @200 {
|
|
copy_response_headers {
|
|
include Foo Bar
|
|
}
|
|
respond "Copied headers from the response"
|
|
}
|
|
|
|
@201 status 201
|
|
handle_response @201 {
|
|
header Foo "Copying the response"
|
|
copy_response 404
|
|
}
|
|
}
|
|
----------
|
|
{
|
|
"apps": {
|
|
"http": {
|
|
"servers": {
|
|
"srv0": {
|
|
"listen": [
|
|
":8884"
|
|
],
|
|
"routes": [
|
|
{
|
|
"handle": [
|
|
{
|
|
"handle_response": [
|
|
{
|
|
"match": {
|
|
"status_code": [
|
|
500
|
|
]
|
|
},
|
|
"status_code": 400
|
|
},
|
|
{
|
|
"match": {
|
|
"status_code": [
|
|
2,
|
|
3,
|
|
4,
|
|
5
|
|
]
|
|
},
|
|
"status_code": "{http.error.status_code}"
|
|
},
|
|
{
|
|
"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": [
|
|
200
|
|
]
|
|
},
|
|
"routes": [
|
|
{
|
|
"handle": [
|
|
{
|
|
"handler": "copy_response_headers",
|
|
"include": [
|
|
"Foo",
|
|
"Bar"
|
|
]
|
|
},
|
|
{
|
|
"body": "Copied headers from the response",
|
|
"handler": "static_response"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"match": {
|
|
"status_code": [
|
|
201
|
|
]
|
|
},
|
|
"routes": [
|
|
{
|
|
"handle": [
|
|
{
|
|
"handler": "headers",
|
|
"response": {
|
|
"set": {
|
|
"Foo": [
|
|
"Copying the response"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"handler": "copy_response",
|
|
"status_code": 404
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"status_code": "{http.error.status_code}"
|
|
},
|
|
{
|
|
"routes": [
|
|
{
|
|
"handle": [
|
|
{
|
|
"body": "Any! This should be last in the JSON!",
|
|
"handler": "static_response"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"handler": "reverse_proxy",
|
|
"upstreams": [
|
|
{
|
|
"dial": "127.0.0.1:65535"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|