Golang 中的反向代理
package main
import (
"log"
"net/http"
"net/http/httputil"
"net/url"
)
type handler struct {
host string
port string
proxy http.Handler
}
func (h *handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
log.Printf("%s %s %s\n", r.Method, r.URL, r.Host)
h.proxy.ServeHTTP(w, r)
}
func newHandler(host, port string) *handler {
h := &handler{
host: host,
port: port,
}
remote, err := url.Parse("http://" + h.host + ":" + h.port)
if err != nil {
panic(err)
}
h.proxy = httputil.NewSingleHostReverseProxy(remote)
return h
}
func main() {
h := newHandler("127.0.0.1", "80")
err := http.ListenAndServe(":8000", h)
if err != nil {
log.Fatalln("ListenAndServe: ", err)
}
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于