mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-03 14:23:46 +08:00
ab0455922a
* reverseproxy: Begin refactor to enable dynamic upstreams Streamed here: https://www.youtube.com/watch?v=hj7yzXb11jU * Implement SRV and A/AAA upstream sources Also get upstreams at every retry loop iteration instead of just once before the loop. See #4442. * Minor tweaks from review * Limit size of upstreams caches * Add doc notes deprecating LookupSRV * Provision dynamic upstreams Still WIP, preparing to preserve health checker functionality * Rejigger health checks Move active health check results into handler-specific Upstreams. Improve documentation regarding health checks and upstreams. * Deprecation notice * Add Caddyfile support, use `caddy.Duration` * Interface guards * Implement custom resolvers, add resolvers to http transport Caddyfile * SRV: fix Caddyfile `name` inline arg, remove proto condition * Use pointer receiver * Add debug logs Co-authored-by: Francis Lavoie <lavofr@gmail.com>
131 lines
2.8 KiB
Plaintext
131 lines
2.8 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
|
|
resolvers 8.8.8.8 8.8.4.4
|
|
|
|
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,
|
|
"resolver": {
|
|
"addresses": [
|
|
"8.8.8.8",
|
|
"8.8.4.4"
|
|
]
|
|
},
|
|
"response_header_timeout": 8000000000,
|
|
"versions": [
|
|
"h2c",
|
|
"2"
|
|
],
|
|
"write_buffer_size": 20000000
|
|
},
|
|
"upstreams": [
|
|
{
|
|
"dial": "localhost:54321"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"match": [
|
|
{
|
|
"path": [
|
|
"/path"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"terminal": true
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|