func Do(c *fiber.Ctx, addr string) error {
	req := c.Request()
	res := c.Response()
	req.SetRequestURI(addr)
	req.Header.Del(fiber.HeaderConnection)
	if err := client.Do(req, res); err != nil {
		return err
	}
	res.Header.Del(fiber.HeaderConnection)
	return nil
}
Do performs the given http request and fills the given http response.
This method can be used within a fiber.Handler
package proxy
import (
	"crypto/tls"
	"fmt"
	"github.com/gofiber/fiber/v2"
	"github.com/gofiber/fiber/v2/utils"
	"github.com/valyala/fasthttp"
	"net/url"
	"strings"
)
func New(config Config) fiber.Handler {
	fmt.Println("proxy.New is deprecated, please use proxy.Balancer instead")
	return Balancer(config)
}
func Balancer(config Config) fiber.Handler {
	cfg := configDefault(config)
	var lbc fasthttp.LBClient
	lbc.Timeout = cfg.Timeout
	for _, server := range cfg.Servers {
		if !strings.HasPrefix(server, "http") {
			server = "http://" + server
		}
		u, err := url.Parse(server)
		if err != nil {
			panic(err)
		}
		client := &fasthttp.HostClient{
			NoDefaultUserAgentHeader: true,
			DisablePathNormalizing:   true,
			Addr:                     u.Host,
			ReadBufferSize:  config.ReadBufferSize,
			WriteBufferSize: config.WriteBufferSize,
			TLSConfig: config.TlsConfig,
		}
		lbc.Clients = append(lbc.Clients, client)
	}
	return func(c *fiber.Ctx) (err error) {
		if cfg.Next != nil && cfg.Next(c) {
			return c.Next()
		}
		req := c.Request()
		res := c.Response()
		req.Header.Del(fiber.HeaderConnection)
		if cfg.ModifyRequest != nil {
			if err = cfg.ModifyRequest(c); err != nil {
				return err
			}
		}
		req.SetRequestURI(utils.UnsafeString(req.RequestURI()))
		if err = lbc.Do(req, res); err != nil {
			return err
		}
		res.Header.Del(fiber.HeaderConnection)
		if cfg.ModifyResponse != nil {
			if err = cfg.ModifyResponse(c); err != nil {
				return err
			}
		}
		return nil
	}
}
var client = fasthttp.Client{
	NoDefaultUserAgentHeader: true,
	DisablePathNormalizing:   true,
}
func WithTlsConfig(tlsConfig *tls.Config) {
	client.TLSConfig = tlsConfig
}
func Forward(addr string) fiber.Handler {
	return func(c *fiber.Ctx) error {
		return Do(c, addr)
	}
}