mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-05 07:24:08 +08:00
c898a37f40
* add integration test for null header matcher * implement null header matcher syntax * avoid repeating magic ! * check for field following ! character
216 lines
3.7 KiB
Plaintext
216 lines
3.7 KiB
Plaintext
:80 {
|
|
@matcher {
|
|
method GET
|
|
}
|
|
respond @matcher "get"
|
|
|
|
@matcher2 method POST
|
|
respond @matcher2 "post"
|
|
|
|
@matcher3 not method PUT
|
|
respond @matcher3 "not put"
|
|
|
|
@matcher4 vars "{http.request.uri}" "/vars-matcher"
|
|
respond @matcher4 "from vars matcher"
|
|
|
|
@matcher5 vars_regexp static "{http.request.uri}" `\.([a-f0-9]{6})\.(css|js)$`
|
|
respond @matcher5 "from vars_regexp matcher with name"
|
|
|
|
@matcher6 vars_regexp "{http.request.uri}" `\.([a-f0-9]{6})\.(css|js)$`
|
|
respond @matcher6 "from vars_regexp matcher without name"
|
|
|
|
@matcher7 {
|
|
header Foo bar
|
|
header Foo foobar
|
|
header Bar foo
|
|
}
|
|
respond @matcher7 "header matcher merging values of the same field"
|
|
|
|
@matcher8 {
|
|
query foo=bar foo=baz bar=foo
|
|
query bar=baz
|
|
}
|
|
respond @matcher8 "query matcher merging pairs with the same keys"
|
|
|
|
@matcher9 {
|
|
header !Foo
|
|
header Bar foo
|
|
}
|
|
respond @matcher9 "header matcher with null field matcher"
|
|
}
|
|
----------
|
|
{
|
|
"apps": {
|
|
"http": {
|
|
"servers": {
|
|
"srv0": {
|
|
"listen": [
|
|
":80"
|
|
],
|
|
"routes": [
|
|
{
|
|
"match": [
|
|
{
|
|
"method": [
|
|
"GET"
|
|
]
|
|
}
|
|
],
|
|
"handle": [
|
|
{
|
|
"body": "get",
|
|
"handler": "static_response"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"match": [
|
|
{
|
|
"method": [
|
|
"POST"
|
|
]
|
|
}
|
|
],
|
|
"handle": [
|
|
{
|
|
"body": "post",
|
|
"handler": "static_response"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"match": [
|
|
{
|
|
"not": [
|
|
{
|
|
"method": [
|
|
"PUT"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"handle": [
|
|
{
|
|
"body": "not put",
|
|
"handler": "static_response"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"match": [
|
|
{
|
|
"vars": {
|
|
"{http.request.uri}": "/vars-matcher"
|
|
}
|
|
}
|
|
],
|
|
"handle": [
|
|
{
|
|
"body": "from vars matcher",
|
|
"handler": "static_response"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"match": [
|
|
{
|
|
"vars_regexp": {
|
|
"{http.request.uri}": {
|
|
"name": "static",
|
|
"pattern": "\\.([a-f0-9]{6})\\.(css|js)$"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"handle": [
|
|
{
|
|
"body": "from vars_regexp matcher with name",
|
|
"handler": "static_response"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"match": [
|
|
{
|
|
"vars_regexp": {
|
|
"{http.request.uri}": {
|
|
"pattern": "\\.([a-f0-9]{6})\\.(css|js)$"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"handle": [
|
|
{
|
|
"body": "from vars_regexp matcher without name",
|
|
"handler": "static_response"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"match": [
|
|
{
|
|
"header": {
|
|
"Bar": [
|
|
"foo"
|
|
],
|
|
"Foo": [
|
|
"bar",
|
|
"foobar"
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"handle": [
|
|
{
|
|
"body": "header matcher merging values of the same field",
|
|
"handler": "static_response"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"match": [
|
|
{
|
|
"query": {
|
|
"bar": [
|
|
"foo",
|
|
"baz"
|
|
],
|
|
"foo": [
|
|
"bar",
|
|
"baz"
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"handle": [
|
|
{
|
|
"body": "query matcher merging pairs with the same keys",
|
|
"handler": "static_response"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"match": [
|
|
{
|
|
"header": {
|
|
"Bar": [
|
|
"foo"
|
|
],
|
|
"Foo": null
|
|
}
|
|
}
|
|
],
|
|
"handle": [
|
|
{
|
|
"body": "header matcher with null field matcher",
|
|
"handler": "static_response"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |