我缺少httputil.NewSingleHostReverseProxy的什么配置?

The code below produces the error further below. When I type "http://www.cnn.com/favicon.ico" straight into any browser it works without issue. I am guessing that I am missing some critical configuration for the reverse proxy. What is the minimum config needed for getting this to work?

package main

import (
    "net/http"
    "net/http/httputil"
    "net/url"
    "log"
)

func main(){
    url, _ := url.Parse("http://www.cnn.com/favicon.ico")
    proxy := httputil.NewSingleHostReverseProxy(url)
    http.HandleFunc("/", proxy.ServeHTTP)
    log.Fatal(http.ListenAndServe(":9090", nil))
}

Fastly error: unknown domain: localhost. Please check that this domain has been added to a service.

Details: cache-lax8625-LAX

Happy 4th of July!

I made the following 2 changes to get it working:

Firstly, point the proxy at www.cnn.com instead of www.cnn.com/favicon.ico. Of course, now we must make our request to localhost:9090/favicon.ico.

Next, set the proxied request's Host field to the target host, not the host of the proxy which is localhost.

The code ends up looking like this:

package main

import (
    "log"
    "net/http"
    "net/http/httputil"
    "net/url"
)

type Director func(*http.Request)

func (f Director) Then(g Director) Director {
    return func(req *http.Request) {
        f(req)
        g(req)
    }
}

func hostDirector(host string) Director {
    return func(req *http.Request) {
        req.Host = host
    }
}

func main() {
    url, _ := url.Parse("http://www.cnn.com")
    proxy := httputil.NewSingleHostReverseProxy(url)

    d := proxy.Director
    // sequence the default director with our host director
    proxy.Director = Director(d).Then(hostDirector(url.Hostname()))

    http.Handle("/", proxy)
    log.Fatal(http.ListenAndServe(":9090", nil))
}