Balancer() — fiber Function Reference
Architecture documentation for the Balancer() function in proxy.go from the fiber codebase.
Entity Profile
Dependency Diagram
graph TD 1b85ddf7_ff7f_1e1a_8643_baf3cb4c1274["Balancer()"] 409bdb74_0bb5_be72_7b00_0c1c6089b005["proxy.go"] 1b85ddf7_ff7f_1e1a_8643_baf3cb4c1274 -->|defined in| 409bdb74_0bb5_be72_7b00_0c1c6089b005 c2502153_4789_a74e_f3f8_bc71e346f366["Do()"] 1b85ddf7_ff7f_1e1a_8643_baf3cb4c1274 -->|calls| c2502153_4789_a74e_f3f8_bc71e346f366 style 1b85ddf7_ff7f_1e1a_8643_baf3cb4c1274 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
middleware/proxy/proxy.go lines 18–109
func Balancer(config ...Config) fiber.Handler {
// Set default config
cfg := configDefault(config...)
// Load balanced client
lbc := &fasthttp.LBClient{}
// Note that Servers, Timeout, WriteBufferSize, ReadBufferSize and TLSConfig
// will not be used if the client are set.
if cfg.Client == nil {
// Set timeout
lbc.Timeout = cfg.Timeout
// Scheme must be provided, falls back to http
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: cfg.ReadBufferSize,
WriteBufferSize: cfg.WriteBufferSize,
TLSConfig: cfg.TLSConfig,
DialDualStack: cfg.DialDualStack,
}
lbc.Clients = append(lbc.Clients, client)
}
} else {
// Set custom client
lbc = cfg.Client
}
// Return new handler
return func(c fiber.Ctx) error {
// Don't execute middleware if Next returns true
if cfg.Next != nil && cfg.Next(c) {
return c.Next()
}
// Set request and response
req := c.Request()
res := c.Response()
if !cfg.KeepConnectionHeader {
// Don't proxy "Connection" header
req.Header.Del(fiber.HeaderConnection)
}
// Modify request
if cfg.ModifyRequest != nil {
if err := cfg.ModifyRequest(c); err != nil {
return err
}
}
if c.App().Config().Immutable {
req.SetRequestURIBytes(req.RequestURI())
} else {
req.SetRequestURI(utils.UnsafeString(req.RequestURI()))
}
// Forward request
if err := lbc.Do(req, res); err != nil {
return err
}
if !cfg.KeepConnectionHeader {
// Don't proxy "Connection" header
res.Header.Del(fiber.HeaderConnection)
}
Domain
Subdomains
Defined In
Calls
Source
Frequently Asked Questions
What does Balancer() do?
Balancer() is a function in the fiber codebase, defined in middleware/proxy/proxy.go.
Where is Balancer() defined?
Balancer() is defined in middleware/proxy/proxy.go at line 18.
What does Balancer() call?
Balancer() calls 1 function(s): Do.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free