package server import ( "local/rproxy3/storage/packable" "log" "net/http" "net/http/httputil" "net/url" "strings" ) func (s *Server) Proxy(w http.ResponseWriter, r *http.Request) { newURL, err := s.lookup(r.Host) if err != nil { http.NotFound(w, r) log.Printf("unknown host lookup %q", r.Host) return } r.Host = newURL.Host proxy := httputil.NewSingleHostReverseProxy(newURL) proxy.ServeHTTP(w, r) } func (s *Server) lookup(host string) (*url.URL, error) { host = strings.Split(host, ".")[0] v := packable.NewURL() err := s.db.Get(nsRouting, host, v) return v.URL(), err }