mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-29 07:03:48 +03:00
b0d5c2c8ae
* implement default values for header directive closes #3804 * remove `set_default` header op and rely on "require" handler instead This has the following advantages over the previous attempt: - It does not introduce a new operation for headers, but rather nicely extends over an existing feature in the header handler. - It removes the need to specify the header as "deferred" because it is already implicitely deferred by the use of the require handler. This should be less confusing to the user. * add integration test for header directive in caddyfile * bubble up errors when parsing caddyfile header directive * don't export unnecessarily and don't canonicalize headers unnecessarily * fix response headers not passed in blocks * caddyfile: fix clash when using default header in block Each header is now set in a separate handler so that it doesn't clash with other headers set/added/deleted in the same block. * caddyhttp: New idle_timeout default of 5m * reverseproxy: fix random hangs on http/2 requests with server push (#3875) see https://github.com/golang/go/issues/42534 * Refactor and cleanup with improvements * More specific link Co-authored-by: Matthew Holt <mholt@users.noreply.github.com> Co-authored-by: Денис Телюх <telyukh.denis@gmail.com>
107 lines
1.7 KiB
Text
107 lines
1.7 KiB
Text
:80 {
|
|
header Denis "Ritchie"
|
|
header +Edsger "Dijkstra"
|
|
header ?John "von Neumann"
|
|
header -Wolfram
|
|
header {
|
|
Grace: "Hopper" # some users habitually suffix field names with a colon
|
|
+Ray "Solomonoff"
|
|
?Tim "Berners-Lee"
|
|
defer
|
|
}
|
|
}
|
|
----------
|
|
{
|
|
"apps": {
|
|
"http": {
|
|
"servers": {
|
|
"srv0": {
|
|
"listen": [
|
|
":80"
|
|
],
|
|
"routes": [
|
|
{
|
|
"handle": [
|
|
{
|
|
"handler": "headers",
|
|
"response": {
|
|
"set": {
|
|
"Denis": [
|
|
"Ritchie"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"handler": "headers",
|
|
"response": {
|
|
"add": {
|
|
"Edsger": [
|
|
"Dijkstra"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"handler": "headers",
|
|
"response": {
|
|
"require": {
|
|
"headers": {
|
|
"John": null
|
|
}
|
|
},
|
|
"set": {
|
|
"John": [
|
|
"von Neumann"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"handler": "headers",
|
|
"response": {
|
|
"deferred": true,
|
|
"delete": [
|
|
"Wolfram"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"handler": "headers",
|
|
"response": {
|
|
"add": {
|
|
"Ray": [
|
|
"Solomonoff"
|
|
]
|
|
},
|
|
"deferred": true,
|
|
"set": {
|
|
"Grace": [
|
|
"Hopper"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"handler": "headers",
|
|
"response": {
|
|
"require": {
|
|
"headers": {
|
|
"Tim": null
|
|
}
|
|
},
|
|
"set": {
|
|
"Tim": [
|
|
"Berners-Lee"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|