Skip to content

Commit

Permalink
reverseproxy: Add support for specifying IDs in Caddyfile
Browse files Browse the repository at this point in the history
  • Loading branch information
francislavoie committed Sep 13, 2021
1 parent a5f4fae commit de58ffe
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 2 deletions.
46 changes: 46 additions & 0 deletions caddytest/integration/caddyfile_adapt/reverse_proxy_ids.txt
@@ -0,0 +1,46 @@
:8884

reverse_proxy one|http://localhost two|http://localhost {
to three|http://localhost four|http://localhost
}
----------
{
"apps": {
"http": {
"servers": {
"srv0": {
"listen": [
":8884"
],
"routes": [
{
"handle": [
{
"handler": "reverse_proxy",
"upstreams": [
{
"dial": "localhost:80",
"id": "one"
},
{
"dial": "localhost:80",
"id": "two"
},
{
"dial": "localhost:80",
"id": "three"
},
{
"dial": "localhost:80",
"id": "four"
}
]
}
]
}
]
}
}
}
}
}
10 changes: 8 additions & 2 deletions modules/caddyhttp/reverseproxy/caddyfile.go
Expand Up @@ -219,6 +219,12 @@ func (h *Handler) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
// treated as a SRV-based upstream, and any port will be
// dropped.
appendUpstream := func(address string) error {
var id string
if strings.Contains(address, "|") {
parts := strings.SplitN(address, "|", 2)
id = parts[0]
address = parts[1]
}
isSRV := strings.HasPrefix(address, "srv+")
if isSRV {
address = strings.TrimPrefix(address, "srv+")
Expand All @@ -231,9 +237,9 @@ func (h *Handler) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
if host, _, err := net.SplitHostPort(dialAddr); err == nil {
dialAddr = host
}
h.Upstreams = append(h.Upstreams, &Upstream{LookupSRV: dialAddr})
h.Upstreams = append(h.Upstreams, &Upstream{ID: id, LookupSRV: dialAddr})
} else {
h.Upstreams = append(h.Upstreams, &Upstream{Dial: dialAddr})
h.Upstreams = append(h.Upstreams, &Upstream{ID: id, Dial: dialAddr})
}
return nil
}
Expand Down

0 comments on commit de58ffe

Please sign in to comment.