TsgcWebSocketLoadBalancerServer事件 › OnLoadBalancerHTTPRequest

OnLoadBalancerHTTPRequest 事件

对于负载均衡器接收到的每个 HTTP 请求,在转发到选定的后端服务器之前触发。

语法

property OnLoadBalancerHTTPRequest: TsgcWSLBHTTPRequestEvent;
// TsgcWSLBHTTPRequestEvent = procedure(Sender: TObject; Connection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; aForward: TsgcWSServerForwardHTTP) of object

默认值

备注

OnLoadBalancerHTTPRequest 在负载均衡器接受的每个 HTTP 请求(当 LoadBalancer.Protocols.HTTP 为 True 时)转发到后端服务器之前立即触发。ARequestInfo 暴露传入请求(Document、Params、RawHeaders、ContentType、PostStream),aForward 携带转发计划:其 Host、Port 和 SSL 属性可被改写以指向不同的后端、不同的 URL 路径(aForward.Document)或切换 TLS。将 aForward.Handled 设置为 True 可完全跳过转发,并通过 Connection 自行回应客户端。典型用途包括自定义路由规则、请求重写、头注入或针对健康检查端点的进程内响应。

示例


procedure OnLoadBalancerHTTPRequest(Sender: TObject; Connection: TsgcWSConnection;
  ARequestInfo: TIdHTTPRequestInfo; aForward: TsgcWSServerForwardHTTP);
begin
  // route /api/* to a different backend
  if StartsText('/api', ARequestInfo.Document) then
  begin
    aForward.Host := '10.0.0.10';
    aForward.Port := 9000;
  end;
end;

返回事件