Documentation ¶
Index ¶
- Constants
- func SearchPath(ctx context.HTTPContext, rulesToCheck []*muxRule) (SearchResult, *MuxPath)
- type HTTPServer
- func (hs *HTTPServer) Category() supervisor.ObjectCategory
- func (hs *HTTPServer) Close()
- func (hs *HTTPServer) DefaultSpec() interface{}
- func (hs *HTTPServer) Inherit(superSpec *supervisor.Spec, previousGeneration supervisor.Object, ...)
- func (hs *HTTPServer) Init(superSpec *supervisor.Spec, muxMapper protocol.MuxMapper)
- func (hs *HTTPServer) Kind() string
- func (hs *HTTPServer) Status() *supervisor.Status
- type Header
- type MuxPath
- type Path
- type Rule
- type SearchResult
- type Spec
- type Status
Constants ¶
const ( // Category is the category of HTTPServer. Category = supervisor.CategoryTrafficGate // Kind is the kind of HTTPServer. Kind = "HTTPServer" )
Variables ¶
This section is empty.
Functions ¶
func SearchPath ¶ added in v1.5.1
func SearchPath(ctx context.HTTPContext, rulesToCheck []*muxRule) (SearchResult, *MuxPath)
SearchPath searches path among list of mux rules
Types ¶
type HTTPServer ¶
type HTTPServer struct {
// contains filtered or unexported fields
}
HTTPServer is Object HTTPServer.
func (*HTTPServer) Category ¶
func (hs *HTTPServer) Category() supervisor.ObjectCategory
Category returns the category of HTTPServer.
func (*HTTPServer) DefaultSpec ¶
func (hs *HTTPServer) DefaultSpec() interface{}
DefaultSpec returns the default spec of HTTPServer.
func (*HTTPServer) Inherit ¶
func (hs *HTTPServer) Inherit(superSpec *supervisor.Spec, previousGeneration supervisor.Object, muxMapper protocol.MuxMapper)
Inherit inherits previous generation of HTTPServer.
func (*HTTPServer) Init ¶
func (hs *HTTPServer) Init(superSpec *supervisor.Spec, muxMapper protocol.MuxMapper)
Init initializes HTTPServer.
func (*HTTPServer) Status ¶
func (hs *HTTPServer) Status() *supervisor.Status
Status is the wrapper of runtime's Status.
type Header ¶
type Header struct { Key string `yaml:"key" jsonschema:"required"` Values []string `yaml:"values,omitempty" jsonschema:"omitempty,uniqueItems=true"` Regexp string `yaml:"regexp,omitempty" jsonschema:"omitempty,format=regexp"` // contains filtered or unexported fields }
Header is the third level entry of router. A header entry is always under a specific path entry, that is to mean the headers entry will only be checked after a path entry matched. However, the headers entry has a higher priority than the path entry itself.
type MuxPath ¶ added in v1.5.1
type MuxPath struct {
// contains filtered or unexported fields
}
MuxPath describes httpserver's path
type Path ¶
type Path struct { IPFilter *ipfilter.Spec `yaml:"ipFilter,omitempty" jsonschema:"omitempty"` Path string `yaml:"path,omitempty" jsonschema:"omitempty,pattern=^/"` PathPrefix string `yaml:"pathPrefix,omitempty" jsonschema:"omitempty,pattern=^/"` PathRegexp string `yaml:"pathRegexp,omitempty" jsonschema:"omitempty,format=regexp"` RewriteTarget string `yaml:"rewriteTarget" jsonschema:"omitempty"` Methods []string `yaml:"methods,omitempty" jsonschema:"omitempty,uniqueItems=true,format=httpmethod-array"` Backend string `yaml:"backend" jsonschema:"required"` Headers []*Header `yaml:"headers" jsonschema:"omitempty"` MatchAllHeader bool `yaml:"MatchAllHeader" jsonschema:"omitempty"` }
Path is second level entry of router.
type Rule ¶
type Rule struct { // NOTICE: If the field is a pointer, it must have `omitempty` in tag `yaml` // when it has `omitempty` in tag `jsonschema`. // Otherwise it will output null value, which is invalid in json schema (the type is object). // the original reason is the jsonscheme(genjs) has not support multiple types. // Reference: https://github.com/alecthomas/jsonschema/issues/30 // In the future if we have the scenario where we need marshal the field, but omitempty // in the schema, we are suppose to support multiple types on our own. IPFilter *ipfilter.Spec `yaml:"ipFilter,omitempty" jsonschema:"omitempty"` Host string `yaml:"host" jsonschema:"omitempty"` HostRegexp string `yaml:"hostRegexp" jsonschema:"omitempty,format=regexp"` Paths []*Path `yaml:"paths" jsonschema:"omitempty"` }
Rule is first level entry of router.
type SearchResult ¶ added in v1.5.1
type SearchResult string
SearchResult is returned by SearchPath
const ( // NotFound means no path found NotFound SearchResult = "not-found" // IPNotAllowed means context IP is not allowd IPNotAllowed SearchResult = "ip-not-allowed" // MethodNotAllowed means context method is not allowd MethodNotAllowed SearchResult = "method-not-allowed" // Found path Found SearchResult = "found" // FoundSkipCache means found path but skip caching result FoundSkipCache SearchResult = "found-skip-cache" )
type Spec ¶
type Spec struct { HTTP3 bool `yaml:"http3" jsonschema:"omitempty"` Port uint16 `yaml:"port" jsonschema:"required,minimum=1"` KeepAlive bool `yaml:"keepAlive" jsonschema:"required"` KeepAliveTimeout string `yaml:"keepAliveTimeout" jsonschema:"omitempty,format=duration"` MaxConnections uint32 `yaml:"maxConnections" jsonschema:"omitempty,minimum=1"` CacheSize uint32 `yaml:"cacheSize" jsonschema:"omitempty"` HTTPS bool `yaml:"https" jsonschema:"required"` AutoCert bool `yaml:"autoCert" jsonschema:"omitempty"` XForwardedFor bool `yaml:"xForwardedFor" jsonschema:"omitempty"` Tracing *tracing.Spec `yaml:"tracing" jsonschema:"omitempty"` CaCertBase64 string `yaml:"caCertBase64" jsonschema:"omitempty,format=base64"` // Support multiple certs, preserve the certbase64 and keybase64 // for backward compatibility CertBase64 string `yaml:"certBase64" jsonschema:"omitempty,format=base64"` KeyBase64 string `yaml:"keyBase64" jsonschema:"omitempty,format=base64"` // Certs saved as map, key is domain name, value is cert Certs map[string]string `yaml:"certs" jsonschema:"omitempty"` // Keys saved as map, key is domain name, value is secret Keys map[string]string `yaml:"keys" jsonschema:"omitempty"` IPFilter *ipfilter.Spec `yaml:"ipFilter,omitempty" jsonschema:"omitempty"` Rules []*Rule `yaml:"rules" jsonschema:"omitempty"` GlobalFilter string `yaml:"globalFilter,omitempty" jsonschema:"omitempty"` }
Spec describes the HTTPServer.