代理转发
Proxy
Fiber 的 Proxy 中间件, 允许你将请求代理到多个服务器。
目录
签名
func Balancer(config Config) fiber.Handler
func Forward(addr string) fiber.Handler
func Do(c *fiber.Ctx, addr string) error
示例
在 Fiber 项目中引入 proxy 包
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/proxy"
)
启动 Fiber 应用程序后, 你就可以使用它:
// 转发到 url
app.Get("/gif", proxy.Forward("https://i.imgur.com/IWaBepg.gif"))
// 处理程序中发出请求
app.Get("/:id", func(c *fiber.Ctx) error {
url := "https://i.imgur.com/"+c.Params("id")+".gif"
if err := proxy.Do(c, url); err != nil {
return err
}
// 从响应中删除 HeaderServer
c.Response().Header.Del(fiber.HeaderServer)
return nil
})
// 最小 Balancer
app.Use(proxy.Balancer(proxy.Config{
Servers: []string{
"http://localhost:3001",
"http://localhost:3002",
"http://localhost:3003",
},
}))
// 或者自定义扩展 Balancer
app.Use(proxy.Balancer(proxy.Config{
Servers: []string{
"http://localhost:3001",
"http://localhost:3002",
"http://localhost:3003",
},
ModifyRequest: func(c *fiber.Ctx) error {
c.Request().Header.Add("X-Real-IP", c.IP())
return nil
},
ModifyResponse: func(c *fiber.Ctx) error {
c.Response().Header.Del(fiber.HeaderServer)
return nil
},
}))
配置
// Config 定义中间件的配置.
type Config struct {
// Next 定义一个函数,当返回 true 时跳过这个中间件.
//
// 可选的. 默认值: nil
Next func(c *fiber.Ctx) bool
// Servers 定义了 <scheme>://<host> HTTP 服务器的列表,
//
// which are used in a round-robin manner.
// 即: "https://foobar.com, http://www.foobar.com"
//
// 必填
Servers []string
// ModifyRequest 允许改变请求
//
// 可选的. 默认值: nil
ModifyRequest fiber.Handler
// ModifyResponse 允许改变响应
//
// 可选的. 默认值: nil
ModifyResponse fiber.Handler
}
默认配置
// ConfigDefault 是默认配置
var ConfigDefault = Config{
Next: nil,
}
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。