Documentation
¶
Index ¶
- func ApplyRequestTimeout(req *http.Request, defaultTimeout time.Duration) (*http.Request, context.CancelFunc)
- func DisableConnectionDeadlines(conn net.Conn) error
- func DisableResponseDeadlines(w http.ResponseWriter) error
- func DisableResponseWriteDeadline(w http.ResponseWriter) error
- func EffectiveUpstreamTimeout(ctx context.Context, defaultTimeout time.Duration) time.Duration
- func IsTimeoutError(err error) bool
- func IsWebSocketUpgrade(r *http.Request) bool
- func LongLivedRequest(ctx context.Context) bool
- func PrepareStreamingProxyResponse(w http.ResponseWriter, req *http.Request) error
- func StreamingResponseDeadlinesDisabled(ctx context.Context) bool
- func UpstreamTimeoutDisabled(ctx context.Context) bool
- func WithLongLivedRequest(ctx context.Context) context.Context
- func WithLongLivedRequestRequest(req *http.Request) *http.Request
- func WithStreamingResponseDeadlinesDisabled(ctx context.Context) context.Context
- func WithStreamingResponseDeadlinesDisabledRequest(req *http.Request) *http.Request
- func WithUpstreamTimeoutDisabled(ctx context.Context) context.Context
- func WithUpstreamTimeoutDisabledRequest(req *http.Request) *http.Request
- type Option
- type RequestModifier
- type Router
- type WebSocketProxy
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
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
EffectiveUpstreamTimeout returns the timeout to apply for an upstream request.
func IsTimeoutError ¶ added in v0.2.2
IsTimeoutError reports whether err was caused by an upstream timeout.
func IsWebSocketUpgrade ¶ added in v0.3.0
IsWebSocketUpgrade checks if the request is a WebSocket upgrade request.
func LongLivedRequest ¶ added in v0.3.0
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
StreamingResponseDeadlinesDisabled reports whether gateway server write deadlines should be cleared without changing upstream timeout enforcement.
func UpstreamTimeoutDisabled ¶ added in v0.2.2
UpstreamTimeoutDisabled reports whether upstream timeout enforcement is disabled.
func WithLongLivedRequest ¶ added in v0.3.0
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
WithLongLivedRequestRequest applies the long-lived request marker to a request.
func WithStreamingResponseDeadlinesDisabled ¶ added in v0.4.1
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
WithStreamingResponseDeadlinesDisabledRequest applies the streaming response deadline marker to a request.
func WithUpstreamTimeoutDisabled ¶ added in v0.2.2
WithUpstreamTimeoutDisabled marks a request context so gateway upstream calls should not apply the default proxy timeout.
Types ¶
type Option ¶
type Option func(*options)
func WithHTTPClient ¶
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 ¶
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 ¶
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