Files
ginx/main.go
T
2019-02-01 17:35:14 +08:00

45 lines
818 B
Go

package main
import (
"net/http"
"net/url"
"net/http/httputil"
"log"
)
var loadBalancer = NewWeightedRR(RR_NGINX)
type handle struct {
addrs []string
}
func (this *handle) ServeHTTP(w http.ResponseWriter, r *http.Request) {
addr := loadBalancer.Next().(string)
remote, err := url.Parse("http://" + addr)
if err != nil {
panic(err)
}
proxy := httputil.NewSingleHostReverseProxy(remote)
proxy.ServeHTTP(w, r)
}
func startServer() {
//被代理的服务器host和port
h := &handle{}
h.addrs = []string{"127.0.0.1:3000"}
w := 1
for _, e := range h.addrs {
loadBalancer.Add(e, w)
w++
}
err := http.ListenAndServe(":9999", h)
if err != nil {
log.Fatalln("ListenAndServe: ", err)
}
}
func main() {
startServer()
}