proxy

package
v0.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 25, 2015 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Overview

Package proxy is middleware that proxies requests.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type HostPool added in v0.6.0

type HostPool []*UpstreamHost

HostPool is a collection of UpstreamHosts.

type LeastConn added in v0.6.0

type LeastConn struct{}

LeastConn is a policy that selects the host with the least connections.

func (*LeastConn) Select added in v0.6.0

func (r *LeastConn) Select(pool HostPool) *UpstreamHost

Select selects the up host with the least number of connections in the pool. If more than one host has the same least number of connections, one of the hosts is chosen at random.

type Policy added in v0.6.0

type Policy interface {
	Select(pool HostPool) *UpstreamHost
}

Policy decides how a host will be selected from a pool.

type Proxy

type Proxy struct {
	Next      middleware.Handler
	Upstreams []Upstream
}

Proxy represents a middleware instance that can proxy requests.

func (Proxy) ServeHTTP

func (p Proxy) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error)

ServeHTTP satisfies the middleware.Handler interface.

type Random added in v0.6.0

type Random struct{}

Random is a policy that selects up hosts from a pool at random.

func (*Random) Select added in v0.6.0

func (r *Random) Select(pool HostPool) *UpstreamHost

Select selects an up host at random from the specified pool.

type ReverseProxy added in v0.6.0

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 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.
	FlushInterval time.Duration
}

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.6.0

func NewSingleHostReverseProxy(target *url.URL) *ReverseProxy

NewSingleHostReverseProxy returns a new ReverseProxy that rewrites 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.

func (*ReverseProxy) ServeHTTP added in v0.6.0

func (p *ReverseProxy) ServeHTTP(rw http.ResponseWriter, req *http.Request, extraHeaders http.Header) error

type RoundRobin added in v0.6.0

type RoundRobin struct {
	Robin uint32
}

RoundRobin is a policy that selects hosts based on round robin ordering.

func (*RoundRobin) Select added in v0.6.0

func (r *RoundRobin) Select(pool HostPool) *UpstreamHost

Select selects an up host from the pool using a round robin ordering scheme.

type Upstream added in v0.6.0

type Upstream interface {
	// The path this upstream host should be routed on
	From() string
	// Selects an upstream host to be routed to.
	Select() *UpstreamHost
}

Upstream manages a pool of proxy upstream hosts. Select should return a suitable upstream host, or nil if no such hosts are available.

func NewStaticUpstreams added in v0.6.0

func NewStaticUpstreams(c parse.Dispenser) ([]Upstream, error)

NewStaticUpstreams parses the configuration input and sets up static upstreams for the proxy middleware.

type UpstreamHost added in v0.6.0

type UpstreamHost struct {
	// The hostname of this upstream host
	Name         string
	ReverseProxy *ReverseProxy
	Conns        int64
	Fails        int32
	FailTimeout  time.Duration
	Unhealthy    bool
	ExtraHeaders http.Header
	CheckDown    UpstreamHostDownFunc
}

UpstreamHost represents a single proxy upstream

func (*UpstreamHost) Down added in v0.6.0

func (uh *UpstreamHost) Down() bool

Down checks whether the upstream host is down or not. Down will try to use uh.CheckDown first, and will fall back to some default criteria if necessary.

type UpstreamHostDownFunc added in v0.6.0

type UpstreamHostDownFunc func(*UpstreamHost) bool

UpstreamHostDownFunc can be used to customize how Down behaves.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL