Documentation ¶
Index ¶
- Constants
- Variables
- func AddPolicySelectFunc(policy string) (err error)
- func AddSelect(name string, fn SelectFunc)
- func AddSelectByCookie(name, cookieName string)
- func AddSelectByHeader(name, headerField string)
- type Context
- type Director
- func (d *Director) AddAvailableBackend(backend string)
- func (d *Director) AddBackend(backend string)
- func (d *Director) AddHost(host string)
- func (d *Director) AddPrefix(prefix string)
- func (d *Director) GenHeaderMap()
- func (d *Director) GenRequestHeaderMap()
- func (d *Director) GenRewriteRegexp()
- func (d *Director) GetAvailableBackends() []string
- func (d *Director) GetTargetURL(backend *string) (*url.URL, error)
- func (d *Director) HealthCheck()
- func (d *Director) Match(host, uri string) (match bool)
- func (d *Director) Prepare()
- func (d *Director) RefreshPriority()
- func (d *Director) RemoveAvailableBackend(backend string)
- func (d *Director) RemoveBackend(backend string)
- func (d *Director) RemoveHost(host string)
- func (d *Director) RemovePrefix(prefix string)
- func (d *Director) Select(c *Context) string
- func (d *Director) SetTransport(transport *http.Transport)
- func (d *Director) StartHealthCheck(interval time.Duration)
- type Directors
- type ErrorHandler
- type HTTPError
- type Middleware
- type Next
- type Pike
- type Response
- type SelectFunc
- type ServerTiming
Constants ¶
const ( // HeaderXForwardedFor x-forwarder-for header HeaderXForwardedFor = "X-Forwarded-For" // HeaderXRealIP x-real-ip header HeaderXRealIP = "X-Real-IP" // HeaderIfModifiedSince if-modified-since header HeaderIfModifiedSince = "If-Modified-Since" // HeaderIfNoneMatch if-none-match header HeaderIfNoneMatch = "If-None-Match" // HeaderContentEncoding content-encoding header HeaderContentEncoding = "Content-Encoding" // HeaderETag http response etag HeaderETag = "ETag" // HeaderLastModified last-modified header HeaderLastModified = "Last-Modified" // HeaderCacheControl http response cache control header HeaderCacheControl = "Cache-Control" // HeaderContentLength content-length header HeaderContentLength = "Content-Length" // HeaderSetCookie http set cookie header HeaderSetCookie = "Set-Cookie" // HeaderContentType http content-type header HeaderContentType = "Content-Type" // HeaderServerTiming http response server timing HeaderServerTiming = "Server-Timing" // HeaderAge http age header HeaderAge = "Age" // HeaderAcceptEncoding http accept-encoding header HeaderAcceptEncoding = "Accept-Encoding" // HeaderXStatus http x-status response header HeaderXStatus = "X-Status" // GzipEncoding gzip encoding GzipEncoding = "gzip" // BrEncoding br encoding BrEncoding = "br" // JSONContent json content-type JSONContent = "application/json; charset=utf-8" )
const ( // ServerTimingPike pike ServerTimingPike = iota // ServerTimingInitialization init中间件 ServerTimingInitialization // ServerTimingIdentifier identifier中间件 ServerTimingIdentifier // ServerTimingDirectorPicker director picker中间件 ServerTimingDirectorPicker // ServerTimingCacheFetcher cache fetcher中间件 ServerTimingCacheFetcher // ServerTimingProxy proxy中间件 ServerTimingProxy // ServerTimingHeaderSetter header setter中间件 ServerTimingHeaderSetter // ServerTimingFreshChecker fresh checker中间件 ServerTimingFreshChecker // ServerTimingDispatcher dispatcher中间件 ServerTimingDispatcher // ServerTimingEnd server timing end ServerTimingEnd )
Variables ¶
var ( // NoopNext no op next function NoopNext = func() error { return nil } // ErrTargetURLNotInit target url map未初始化 ErrTargetURLNotInit = NewHTTPError(http.StatusNotImplemented, "target url is not init") // ErrParseBackendURLFail 生成backend url失败 ErrParseBackendURLFail = NewHTTPError(http.StatusNotImplemented, "parse backend url fail") )
Functions ¶
func AddPolicySelectFunc ¶
AddPolicySelectFunc 增加新的policy选择函数
func AddSelectByCookie ¶
func AddSelectByCookie(name, cookieName string)
AddSelectByCookie 根据cookie来选择backend
func AddSelectByHeader ¶
func AddSelectByHeader(name, headerField string)
AddSelectByHeader 根据http header的字段来选择
Types ¶
type Context ¶
type Context struct { Request *http.Request Response *Response ResponseWriter http.ResponseWriter ServerTiming *ServerTiming // Status 该请求的状态 fetching pass等 Status int // Identity 该请求的标记 Identity []byte // Director 该请求对应的director Director *Director // Resp 该请求的响应数据 Resp *cache.Response // Fresh 是否fresh Fresh bool // CreatedAt 创建时间 CreatedAt time.Time }
Context context
type Director ¶
type Director struct { // 名称 Name string `json:"name"` // backend的选择策略 Policy string `json:"policy"` // ping设置(检测backend是否要用) Ping string `json:"ping"` // backend列表 Backends []string `json:"backends"` // 可用的backend列表(通过ping检测) AvailableBackends []string `json:"availableBackends"` // host列表 Hosts []string `json:"hosts"` // url前缀 Prefixs []string `json:"prefixs"` // Rewrites 需要重写的url配置 Rewrites []string `json:"rewrites"` // RequestHeader 需要设置的请求头 RequestHeader []string `json:"-"` // RequestHeaderMap 请求头 RequestHeaderMap map[string]string `json:"requestHeader"` // Header 需要设置的响应头 Header []string `json:"-"` // HeaderMap 响应头 HeaderMap map[string]string `json:"header"` // RewriteRegexp 需要重写的正则匹配 RewriteRegexp map[*regexp.Regexp]string `json:"-"` // 优先级 Priority int `json:"priority"` // 读写锁 sync.RWMutex // transport 指定transport Transport *http.Transport `json:"-"` // TargetURLMap 每个backend对应的URL对象 TargetURLMap map[string]*url.URL `json:"-"` // contains filtered or unexported fields }
Director 服务器列表
func (*Director) AddAvailableBackend ¶
AddAvailableBackend 增加可用backend列表
func (*Director) GenRequestHeaderMap ¶
func (d *Director) GenRequestHeaderMap()
GenRequestHeaderMap 生成请求头
func (*Director) GenRewriteRegexp ¶
func (d *Director) GenRewriteRegexp()
GenRewriteRegexp 生成重写url的正则
func (*Director) GetAvailableBackends ¶
GetAvailableBackends 获取可用的backend
func (*Director) GetTargetURL ¶
GetTargetURL 获取backend对应的*URL
func (*Director) RemoveAvailableBackend ¶
RemoveAvailableBackend 删除可用的backend
func (*Director) RemoveBackend ¶
RemoveBackend 删除backend
func (*Director) SetTransport ¶
SetTransport 设置transport
func (*Director) StartHealthCheck ¶
StartHealthCheck 启用health check
type HTTPError ¶
type HTTPError struct { Code int Message interface{} Internal error // Stores the error returned by an external dependency }
HTTPError represents an error that occurred while handling a request. (copy from echo)
func NewHTTPError ¶
NewHTTPError creates a new HTTPError instance.
type Pike ¶
type Pike struct { ReadTimeout time.Duration WriteTimeout time.Duration ErrorHandler ErrorHandler // contains filtered or unexported fields }
Pike app instance of pike
func (*Pike) DefaultErrorHanddler ¶
DefaultErrorHanddler 默认的出错处理
func (*Pike) ListenAndServe ¶
ListenAndServe the http function ListenAndServe
type Response ¶
type Response struct { Committed bool // contains filtered or unexported fields }
Response http response
type ServerTiming ¶
type ServerTiming struct {
// contains filtered or unexported fields
}
ServerTiming server timing
func (*ServerTiming) Start ¶
func (st *ServerTiming) Start(index int) func()
Start 开始server timing的记录
func (*ServerTiming) String ¶
func (st *ServerTiming) String() string
String 获取server timing的http header string