To install the package, run:
go get -u github.com/go-zoox/proxy
package main
import (
"fmt"
"net/http"
"github.com/go-zoox/proxy"
)
func main() {
fmt.Println("Starting proxy at http://127.0.0.1:9999 ...")
http.ListenAndServe(":9999", proxy.New(&proxy.Config{
OnRequest: func(req *http.Request) error {
req.URL.Host = "127.0.0.1:8080"
return nil
},
}))
}
// visit http://127.0.0.1:9999/ip => http://127.0.0.1:8080/ip
// curl -v http://127.0.0.1:9999/ip
package main
import (
"fmt"
"net/http"
"github.com/go-zoox/proxy"
)
func main() {
target := "https://httpbin.org"
fmt.Println("Starting proxy at http://127.0.0.1:9999 ...")
http.ListenAndServe(":9999", proxy.NewSingleHost(target))
}
package main
import (
"fmt"
"net/http"
"github.com/go-zoox/proxy"
"github.com/go-zoox/proxy/utils/rewriter"
)
func main() {
target := "https://httpbin.org"
fmt.Println("Starting proxy at http://127.0.0.1:9999 ...")
http.ListenAndServe(":9999", proxy.NewSingleHost(target, &proxy.SingleHostConfig{
Rewrites: rewriter.Rewriters{
{
From: "/api/ip",
To: "/ip",
},
{
From: "/api/headers",
To: "/headers",
},
{
From: "/api/v2/(.*)",
To: "/$1",
},
},
}))
}
package main
import (
"fmt"
"net/http"
"github.com/go-zoox/proxy"
)
func main() {
fmt.Println("Starting proxy at http://127.0.0.1:9999 ...")
http.ListenAndServe(":9999", proxy.NewMultiHosts(&proxy.MultiHostsConfig{
Routes: []proxy.MultiHostsRoute{
{
Host: "httpbin1.go-zoox.work",
Backend: proxy.MultiHostsRouteBackend{
ServiceProtocol: "https",
ServiceName: "httpbin.zcorky.com",
ServicePort: 443,
},
},
{
Host: "httpbin2.go-zoox.work",
Backend: proxy.MultiHostsRouteBackend{
ServiceProtocol: "https",
ServiceName: "httpbin.org",
ServicePort: 443,
},
},
},
}))
}
- Go httputil.ReverseProxy
GoZoox is released under the MIT License.