update
This commit is contained in:
@@ -46,11 +46,36 @@ export interface IRouteMatch {
|
||||
|
||||
|
||||
/**
|
||||
* Target configuration for forwarding
|
||||
* Target-specific match criteria for sub-routing within a route
|
||||
*/
|
||||
export interface ITargetMatch {
|
||||
ports?: number[]; // Match specific ports from the route
|
||||
path?: string; // Match specific paths (supports wildcards like /api/*)
|
||||
headers?: Record<string, string | RegExp>; // Match specific HTTP headers
|
||||
method?: string[]; // Match specific HTTP methods (GET, POST, etc.)
|
||||
}
|
||||
|
||||
/**
|
||||
* Target configuration for forwarding with sub-matching and overrides
|
||||
*/
|
||||
export interface IRouteTarget {
|
||||
// Optional sub-matching criteria within the route
|
||||
match?: ITargetMatch;
|
||||
|
||||
// Target destination
|
||||
host: string | string[] | ((context: IRouteContext) => string | string[]); // Host or hosts with optional function for dynamic resolution
|
||||
port: number | 'preserve' | ((context: IRouteContext) => number); // Port with optional function for dynamic mapping (use 'preserve' to keep the incoming port)
|
||||
|
||||
// Optional target-specific overrides (these override route-level settings)
|
||||
tls?: IRouteTls; // Override route-level TLS settings
|
||||
websocket?: IRouteWebSocket; // Override route-level WebSocket settings
|
||||
loadBalancing?: IRouteLoadBalancing; // Override route-level load balancing
|
||||
sendProxyProtocol?: boolean; // Override route-level proxy protocol setting
|
||||
headers?: IRouteHeaders; // Override route-level headers
|
||||
advanced?: IRouteAdvanced; // Override route-level advanced settings
|
||||
|
||||
// Priority for matching (higher values are checked first, default: 0)
|
||||
priority?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -221,19 +246,19 @@ export interface IRouteAction {
|
||||
// Basic routing
|
||||
type: TRouteActionType;
|
||||
|
||||
// Target for forwarding
|
||||
target?: IRouteTarget;
|
||||
// Targets for forwarding (array supports multiple targets with sub-matching)
|
||||
targets: IRouteTarget[];
|
||||
|
||||
// TLS handling
|
||||
// TLS handling (default for all targets, can be overridden per target)
|
||||
tls?: IRouteTls;
|
||||
|
||||
// WebSocket support
|
||||
// WebSocket support (default for all targets, can be overridden per target)
|
||||
websocket?: IRouteWebSocket;
|
||||
|
||||
// Load balancing options
|
||||
// Load balancing options (default for all targets, can be overridden per target)
|
||||
loadBalancing?: IRouteLoadBalancing;
|
||||
|
||||
// Advanced options
|
||||
// Advanced options (default for all targets, can be overridden per target)
|
||||
advanced?: IRouteAdvanced;
|
||||
|
||||
// Additional options for backend-specific settings
|
||||
@@ -251,7 +276,7 @@ export interface IRouteAction {
|
||||
// Socket handler function (when type is 'socket-handler')
|
||||
socketHandler?: TSocketHandler;
|
||||
|
||||
// PROXY protocol support
|
||||
// PROXY protocol support (default for all targets, can be overridden per target)
|
||||
sendProxyProtocol?: boolean;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user