proxy

package
v0.6.1 Latest Latest
Warning

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

Go to latest
Published: Jun 13, 2026 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ApplyRequestTimeout added in v0.2.2

func ApplyRequestTimeout(req *http.Request, defaultTimeout time.Duration) (*http.Request, context.CancelFunc)

ApplyRequestTimeout derives a request context with the effective upstream timeout. The returned cancel func is always safe to call.

func DisableConnectionDeadlines added in v0.3.0

func DisableConnectionDeadlines(conn net.Conn) error

DisableConnectionDeadlines clears read and write deadlines on a hijacked or upgraded connection used for long-lived streams.

func DisableResponseDeadlines added in v0.3.0

func DisableResponseDeadlines(w http.ResponseWriter) error

DisableResponseDeadlines clears server-managed read and write deadlines for an upgraded long-lived connection. It must be called before hijacking.

func DisableResponseWriteDeadline added in v0.3.0

func DisableResponseWriteDeadline(w http.ResponseWriter) error

DisableResponseWriteDeadline clears the server-managed write deadline for a long-lived response. It must be called before the handler writes headers.

func EffectiveUpstreamTimeout added in v0.2.2

func EffectiveUpstreamTimeout(ctx context.Context, defaultTimeout time.Duration) time.Duration

EffectiveUpstreamTimeout returns the timeout to apply for an upstream request.

func IsTimeoutError added in v0.2.2

func IsTimeoutError(err error) bool

IsTimeoutError reports whether err was caused by an upstream timeout.

func IsWebSocketUpgrade added in v0.3.0

func IsWebSocketUpgrade(r *http.Request) bool

IsWebSocketUpgrade checks if the request is a WebSocket upgrade request.

func LongLivedRequest added in v0.3.0

func LongLivedRequest(ctx context.Context) bool

LongLivedRequest reports whether the request should be treated as a long-lived route that is allowed to keep the downstream connection open.

func PrepareStreamingProxyResponse added in v0.3.0

func PrepareStreamingProxyResponse(w http.ResponseWriter, req *http.Request) error

PrepareStreamingProxyResponse clears downstream server deadlines when a proxied request is allowed to outlive the ordinary upstream timeout.

func StreamingResponseDeadlinesDisabled added in v0.4.1

func StreamingResponseDeadlinesDisabled(ctx context.Context) bool

StreamingResponseDeadlinesDisabled reports whether gateway server write deadlines should be cleared without changing upstream timeout enforcement.

func UpstreamTimeoutDisabled added in v0.2.2

func UpstreamTimeoutDisabled(ctx context.Context) bool

UpstreamTimeoutDisabled reports whether upstream timeout enforcement is disabled.

func WithLongLivedRequest added in v0.3.0

func WithLongLivedRequest(ctx context.Context) context.Context

WithLongLivedRequest marks a request context as a long-lived streaming route. Long-lived requests also bypass the default upstream proxy timeout.

func WithLongLivedRequestRequest added in v0.3.0

func WithLongLivedRequestRequest(req *http.Request) *http.Request

WithLongLivedRequestRequest applies the long-lived request marker to a request.

func WithStreamingResponseDeadlinesDisabled added in v0.4.1

func WithStreamingResponseDeadlinesDisabled(ctx context.Context) context.Context

WithStreamingResponseDeadlinesDisabled marks a request context so gateway server write deadlines are cleared while still allowing an upstream timeout.

func WithStreamingResponseDeadlinesDisabledRequest added in v0.4.1

func WithStreamingResponseDeadlinesDisabledRequest(req *http.Request) *http.Request

WithStreamingResponseDeadlinesDisabledRequest applies the streaming response deadline marker to a request.

func WithUpstreamTimeoutDisabled added in v0.2.2

func WithUpstreamTimeoutDisabled(ctx context.Context) context.Context

WithUpstreamTimeoutDisabled marks a request context so gateway upstream calls should not apply the default proxy timeout.

func WithUpstreamTimeoutDisabledRequest added in v0.2.2

func WithUpstreamTimeoutDisabledRequest(req *http.Request) *http.Request

WithUpstreamTimeoutDisabledRequest applies the no-timeout marker to a request.

Types

type Option

type Option func(*options)

func WithHTTPClient

func WithHTTPClient(client *http.Client) Option

WithHTTPClient sets a custom HTTP client for the proxy. This allows for custom transport configurations including observability.

func WithRequestModifier

func WithRequestModifier(mod RequestModifier) Option

WithRequestModifier registers a request modifier for proxy requests.

func WithTrustedForwardedHeaders added in v0.4.1

func WithTrustedForwardedHeaders() Option

WithTrustedForwardedHeaders preserves inbound X-Forwarded-* identity headers before appending the current proxy hop. Only use this on authenticated internal proxy hops where the previous proxy is trusted.

type RequestModifier

type RequestModifier func(*http.Request)

RequestModifier mutates an outgoing request before proxying.

type Router

type Router struct {
	// contains filtered or unexported fields
}

Router handles request routing to upstream services

func NewRouter

func NewRouter(targetUrl string, logger *zap.Logger, timeout time.Duration, opts ...Option) (*Router, error)

NewRouter creates a new router

func (*Router) ProxyToTarget

func (r *Router) ProxyToTarget(c *gin.Context)

ProxyToTarget creates a reverse proxy handler for target service

type WebSocketProxy

type WebSocketProxy struct {
	// contains filtered or unexported fields
}

WebSocketProxy handles WebSocket connections proxying

func NewWebSocketProxy

func NewWebSocketProxy(logger *zap.Logger, opts ...Option) *WebSocketProxy

NewWebSocketProxy creates a new WebSocket proxy

func (*WebSocketProxy) Proxy

func (p *WebSocketProxy) Proxy(targetURL *url.URL) gin.HandlerFunc

Proxy creates a WebSocket proxy handler

Jump to

Keyboard shortcuts

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