Documentation ¶
Overview ¶
Package forward implements http handler that forwards requests to remote server and serves back the response. websocket proxying support based on https://github.com/yhat/wsutil
Index ¶
Constants ¶
const ( // XForwardedProto stores the forwarder proto header key. XForwardedProto = "X-Forwarded-Proto" // XForwardedFor stores the forwar for header key. XForwardedFor = "X-Forwarded-For" // XForwardedHost stores the forward host header key. XForwardedHost = "X-Forwarded-Host" // XForwardedServer stores the forward server header key. XForwardedServer = "X-Forwarded-Server" // Connection stores the connection header key. Connection = "Connection" // KeepAlive stores the keep alive header key. KeepAlive = "Keep-Alive" // ProxyAuthenticate stores the proxy header key. ProxyAuthenticate = "Proxy-Authenticate" // ProxyAuthorization stores the proxy authorization header key. ProxyAuthorization = "Proxy-Authorization" // Te stores the proxy TE header key. Te = "Te" // canonicalized version of "TE" // Trailers stores the trailers header key. Trailers = "Trailers" // TransferEncoding stores the transfer encoding header key. TransferEncoding = "Transfer-Encoding" // Upgrade stores the update header key. Upgrade = "Upgrade" // ContentLength stores the content length header key. ContentLength = "Content-Length" )
Variables ¶
var HopHeaders = []string{ Connection, KeepAlive, ProxyAuthenticate, ProxyAuthorization, Te, Trailers, TransferEncoding, Upgrade, }
HopHeaders stores the hop-by-hop headers. These are removed when sent to the backend. http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html
Functions ¶
Types ¶
type Forwarder ¶
type Forwarder struct {
// contains filtered or unexported fields
}
Forwarder wraps two traffic forwarding implementations: HTTP and websockets. It decides based on the specified request which implementation to use
type HeaderRewriter ¶
HeaderRewriter is responsible for removing hop-by-hop headers and setting forwarding headers.
func (*HeaderRewriter) Rewrite ¶
func (rw *HeaderRewriter) Rewrite(req *http.Request)
Rewrite rewrites the given request removing hop-by-hop headers and setting forwarding headers.
type OptSetter ¶
OptSetter represents the forwarder setter function.
func ErrorHandler ¶
func ErrorHandler(h utils.ErrorHandler) OptSetter
ErrorHandler is a functional argument that sets error handler of the server
func Logger ¶
Logger specifies the logger to use. Forwarder will default to utils.NullLogger if no logger has been specified
func PassHostHeader ¶
PassHostHeader specifies if a client's Host header field should be delegated
func Rewriter ¶
func Rewriter(r ReqRewriter) OptSetter
Rewriter defines a request rewriter for the HTTP forwarder
func RoundTripper ¶
func RoundTripper(r http.RoundTripper) OptSetter
RoundTripper sets a new http.RoundTripper Forwarder will use http.DefaultTransport as a default round tripper
func WebsocketRewriter ¶
func WebsocketRewriter(r ReqRewriter) OptSetter
WebsocketRewriter defines a request rewriter for the websocket forwarder
type ReqRewriter ¶
ReqRewriter can alter request headers and body