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