Documentation ¶
Index ¶
- Constants
- Variables
- func GetHTTPSHostname(c net.Conn) (_ net.Conn, _ map[string]string, err error)
- type BufferPool
- type ByLocation
- type CreateConnFunc
- type HTTPReverseProxy
- func (rp *HTTPReverseProxy) CheckAuth(domain, location, user, passwd string) bool
- func (rp *HTTPReverseProxy) CreateConnection(domain string, location string, remoteAddr string) (net.Conn, error)
- func (rp *HTTPReverseProxy) GetHeaders(domain string, location string) (headers map[string]string)
- func (rp *HTTPReverseProxy) GetRealHost(domain string, location string) (host string)
- func (rp *HTTPReverseProxy) Register(routeCfg RouteConfig) error
- func (rp *HTTPReverseProxy) ServeHTTP(rw http.ResponseWriter, req *http.Request)
- func (rp *HTTPReverseProxy) UnRegister(domain string, location string)
- type HTTPReverseProxyOptions
- type HTTPSMuxer
- type Listener
- type Muxer
- type ReverseProxy
- type RouteConfig
- type RouteInfo
- type Router
- type Routers
Constants ¶
const (
NotFound = `` /* 489-byte string literal not displayed */
)
Variables ¶
var (
ErrNoDomain = errors.New("no such domain")
)
var (
ErrRouterConfigConflict = errors.New("router config conflict")
)
var (
NotFoundPagePath = ""
)
Functions ¶
Types ¶
type BufferPool ¶ added in v0.14.1
A BufferPool is an interface for getting and returning temporary byte slices for use by io.CopyBuffer.
type ByLocation ¶
type ByLocation []*Router
sort by location
func (ByLocation) Len ¶
func (a ByLocation) Len() int
func (ByLocation) Less ¶
func (a ByLocation) Less(i, j int) bool
func (ByLocation) Swap ¶
func (a ByLocation) Swap(i, j int)
type CreateConnFunc ¶ added in v0.14.1
type HTTPReverseProxy ¶ added in v0.34.0
type HTTPReverseProxy struct {
// contains filtered or unexported fields
}
func NewHTTPReverseProxy ¶ added in v0.34.0
func NewHTTPReverseProxy(option HTTPReverseProxyOptions, vhostRouter *Routers) *HTTPReverseProxy
func (*HTTPReverseProxy) CheckAuth ¶ added in v0.34.0
func (rp *HTTPReverseProxy) CheckAuth(domain, location, user, passwd string) bool
func (*HTTPReverseProxy) CreateConnection ¶ added in v0.34.0
func (rp *HTTPReverseProxy) CreateConnection(domain string, location string, remoteAddr string) (net.Conn, error)
CreateConnection create a new connection by route config
func (*HTTPReverseProxy) GetHeaders ¶ added in v0.34.0
func (rp *HTTPReverseProxy) GetHeaders(domain string, location string) (headers map[string]string)
func (*HTTPReverseProxy) GetRealHost ¶ added in v0.34.0
func (rp *HTTPReverseProxy) GetRealHost(domain string, location string) (host string)
func (*HTTPReverseProxy) Register ¶ added in v0.34.0
func (rp *HTTPReverseProxy) Register(routeCfg RouteConfig) error
Register register the route config to reverse proxy reverse proxy will use CreateConnFn from routeCfg to create a connection to the remote service
func (*HTTPReverseProxy) ServeHTTP ¶ added in v0.34.0
func (rp *HTTPReverseProxy) ServeHTTP(rw http.ResponseWriter, req *http.Request)
func (*HTTPReverseProxy) UnRegister ¶ added in v0.34.0
func (rp *HTTPReverseProxy) UnRegister(domain string, location string)
UnRegister unregister route config by domain and location
type HTTPReverseProxyOptions ¶ added in v0.34.0
type HTTPReverseProxyOptions struct {
ResponseHeaderTimeoutS int64
}
type HTTPSMuxer ¶ added in v0.34.0
type HTTPSMuxer struct {
*Muxer
}
func NewHTTPSMuxer ¶ added in v0.34.0
type Muxer ¶ added in v0.34.0
type Muxer struct {
// contains filtered or unexported fields
}
type ReverseProxy ¶ added in v0.14.1
type ReverseProxy struct { // Director must be a function which modifies // the request into a new request to be sent // using Transport. Its response is then copied // back to the original client unmodified. // Director must not access the provided Request // after returning. Director func(*http.Request) // The transport used to perform proxy requests. // If nil, http.DefaultTransport is used. Transport http.RoundTripper // FlushInterval specifies the flush interval // to flush to the client while copying the // response body. // If zero, no periodic flushing is done. // A negative value means to flush immediately // after each write to the client. // The FlushInterval is ignored when ReverseProxy // recognizes a response as a streaming response; // for such responses, writes are flushed to the client // immediately. FlushInterval time.Duration // ErrorLog specifies an optional logger for errors // that occur when attempting to proxy the request. // If nil, logging is done via the log package's standard logger. ErrorLog *log.Logger // BufferPool optionally specifies a buffer pool to // get byte slices for use by io.CopyBuffer when // copying HTTP response bodies. BufferPool BufferPool // ModifyResponse is an optional function that modifies the // Response from the backend. It is called if the backend // returns a response at all, with any HTTP status code. // If the backend is unreachable, the optional ErrorHandler is // called without any call to ModifyResponse. // // If ModifyResponse returns an error, ErrorHandler is called // with its error value. If ErrorHandler is nil, its default // implementation is used. ModifyResponse func(*http.Response) error // ErrorHandler is an optional function that handles errors // reaching the backend or errors from ModifyResponse. // // If nil, the default is to log the provided error and return // a 502 Status Bad Gateway response. ErrorHandler func(http.ResponseWriter, *http.Request, error) }
ReverseProxy is an HTTP Handler that takes an incoming request and sends it to another server, proxying the response back to the client.
func NewSingleHostReverseProxy ¶ added in v0.14.1
func NewSingleHostReverseProxy(target *url.URL) *ReverseProxy
NewSingleHostReverseProxy returns a new ReverseProxy that routes URLs to the scheme, host, and base path provided in target. If the target's path is "/base" and the incoming request was for "/dir", the target request will be for /base/dir. NewSingleHostReverseProxy does not rewrite the Host header. To rewrite Host headers, use ReverseProxy directly with a custom Director policy.
func (*ReverseProxy) ServeHTTP ¶ added in v0.14.1
func (p *ReverseProxy) ServeHTTP(rw http.ResponseWriter, req *http.Request)
type RouteConfig ¶ added in v0.34.0
type RouteConfig struct { Domain string Location string RewriteHost string Username string Password string Headers map[string]string CreateConnFn CreateConnFunc }
RouteConfig is the params used to match HTTP requests