https://git.jolheiser.com/tailroute.git
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
package tailroute import ( "net/http" "net/http/httputil" "net/url" ) func Proxy(target *url.URL, funnel bool) Router { proxy := httputil.NewSingleHostReverseProxy(target) proxyDirector := proxy.Director proxy.Director = func(r *http.Request) { proxyDirector(r) r.Host = target.Host r.Header.Set("X-Forwarded-Host", r.Header.Get("Host")) } handler := http.HandlerFunc(proxy.ServeHTTP) r := Router{ Tailnet: handler, } if funnel { r.Funnel = handler } return r }