mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-12 13:33:51 +08:00
9ee68c1bd5
* reverseproxy: Adjust defaults, document defaults Related to some of the issues in https://github.com/caddyserver/caddy/issues/4245, a complaint about the proxy transport defaults not being properly documented in https://caddy.community/t/default-values-for-directives/14254/6. - Dug into the stdlib to find the actual defaults for some of the timeouts and buffer limits, documenting them in godoc so the JSON docs get them next release. - Moved the keep-alive and dial-timeout defaults from `reverseproxy.go` to `httptransport.go`. It doesn't make sense to set defaults in the proxy, because then any time the transport is configured with non-defaults, the keep-alive and dial-timeout defaults are lost! - Sped up the dial timeout from 10s to 3s, in practice it rarely makes sense to wait a whole 10s for dialing. A shorter timeout helps a lot with the load balancer retries, so using something lower helps with user experience. * reverseproxy: Make keepalive interval configurable via Caddyfile * fastcgi: DialTimeout default for fastcgi transport too
124 lines
2.6 KiB
Plaintext
124 lines
2.6 KiB
Plaintext
|
|
https://example.com {
|
|
reverse_proxy /path http://localhost:54321 {
|
|
header_up Host {host}
|
|
header_up X-Real-IP {remote}
|
|
header_up X-Forwarded-For {remote}
|
|
header_up X-Forwarded-Port {server_port}
|
|
header_up X-Forwarded-Proto "http"
|
|
|
|
buffer_requests
|
|
|
|
transport http {
|
|
read_buffer 10MB
|
|
write_buffer 20MB
|
|
max_response_header 30MB
|
|
dial_timeout 3s
|
|
dial_fallback_delay 5s
|
|
response_header_timeout 8s
|
|
expect_continue_timeout 9s
|
|
|
|
versions h2c 2
|
|
compression off
|
|
max_conns_per_host 5
|
|
keepalive_idle_conns_per_host 2
|
|
keepalive_interval 30s
|
|
}
|
|
}
|
|
}
|
|
|
|
----------
|
|
{
|
|
"apps": {
|
|
"http": {
|
|
"servers": {
|
|
"srv0": {
|
|
"listen": [
|
|
":443"
|
|
],
|
|
"routes": [
|
|
{
|
|
"match": [
|
|
{
|
|
"host": [
|
|
"example.com"
|
|
]
|
|
}
|
|
],
|
|
"handle": [
|
|
{
|
|
"handler": "subroute",
|
|
"routes": [
|
|
{
|
|
"handle": [
|
|
{
|
|
"buffer_requests": true,
|
|
"handler": "reverse_proxy",
|
|
"headers": {
|
|
"request": {
|
|
"set": {
|
|
"Host": [
|
|
"{http.request.host}"
|
|
],
|
|
"X-Forwarded-For": [
|
|
"{http.request.remote}"
|
|
],
|
|
"X-Forwarded-Port": [
|
|
"{server_port}"
|
|
],
|
|
"X-Forwarded-Proto": [
|
|
"http"
|
|
],
|
|
"X-Real-Ip": [
|
|
"{http.request.remote}"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"transport": {
|
|
"compression": false,
|
|
"dial_fallback_delay": 5000000000,
|
|
"dial_timeout": 3000000000,
|
|
"expect_continue_timeout": 9000000000,
|
|
"keep_alive": {
|
|
"max_idle_conns_per_host": 2,
|
|
"probe_interval": 30000000000
|
|
},
|
|
"max_conns_per_host": 5,
|
|
"max_response_header_size": 30000000,
|
|
"protocol": "http",
|
|
"read_buffer_size": 10000000,
|
|
"response_header_timeout": 8000000000,
|
|
"versions": [
|
|
"h2c",
|
|
"2"
|
|
],
|
|
"write_buffer_size": 20000000
|
|
},
|
|
"upstreams": [
|
|
{
|
|
"dial": "localhost:54321"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"match": [
|
|
{
|
|
"path": [
|
|
"/path"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"terminal": true
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|