Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
Mirrored from https://github.com/Slazee/caddy.git
Synced Nov 14, 05:15 UTC
reverse_proxy: Fix panic for some CLI flag values (closes #2848)
Matthew Holt committed
Oct 31, 2019 at 11:34 UTC
8ef0a0b4f8968fd1952449f9068e66486f40964c
1 file changed
+15
-9
modules/caddyhttp/reverseproxy/command.go
+15
-9
@@ -17,7 +17,7 @@ package reverseproxy
17
import (
18
"encoding/json"
19
"flag"
20
- "log"
20
+ "fmt"
21
"net/http"
22
"net/url"
23
"strings"
@@ -63,18 +63,21 @@ func cmdReverseProxy(fs caddycmd.Flags) (int, error) {
63
from = "localhost:" + httpcaddyfile.DefaultPort
64
}
65
66
+ // URLs need a scheme in order to parse successfully
67
if !strings.Contains(from, "://") {
68
from = "http://" + from
69
}
70
+ if !strings.Contains(to, "://") {
71
+ to = "http://" + to
72
+ }
73
74
fromURL, err := url.Parse(from)
75
if err != nil {
72
- fromURL.Host = from
76
+ return caddy.ExitCodeFailedStartup, fmt.Errorf("parsing 'from' URL: %v", err)
77
}
74
-
78
toURL, err := url.Parse(to)
79
if err != nil {
77
- toURL.Host = to
80
+ return caddy.ExitCodeFailedStartup, fmt.Errorf("parsing 'to' URL: %v", err)
81
}
82
83
ht := HTTPTransport{}
@@ -99,16 +102,19 @@ func cmdReverseProxy(fs caddycmd.Flags) (int, error) {
102
caddyconfig.JSONModuleObject(handler, "handler", "reverse_proxy", nil),
103
},
104
}
102
- if fromURL.Hostname() != "" {
105
+ urlHost := fromURL.Hostname()
106
+ if urlHost != "" {
107
route.MatcherSetsRaw = []map[string]json.RawMessage{
108
map[string]json.RawMessage{
105
- "host": caddyconfig.JSON(caddyhttp.MatchHost{fromURL.Hostname()}, nil),
109
+ "host": caddyconfig.JSON(caddyhttp.MatchHost{urlHost}, nil),
110
},
111
}
112
}
113
110
- listen := ":" + httpcaddyfile.DefaultPort
111
- if certmagic.HostQualifies(fromURL.Hostname()) {
114
+ listen := ":80"
115
+ if urlPort := fromURL.Port(); urlPort != "" {
116
+ listen = ":" + urlPort
117
+ } else if certmagic.HostQualifies(urlHost) {
118
listen = ":443"
119
}
120
@@ -132,7 +138,7 @@ func cmdReverseProxy(fs caddycmd.Flags) (int, error) {
138
return caddy.ExitCodeFailedStartup, err
139
}
140
135
- log.Printf("Caddy 2 proxying from %s to %s", from, to)
141
+ fmt.Printf("Caddy 2 proxying from %s to %s\n", fromURL, toURL)
142
143
select {}
144
}