TsgcWebSocketLoadBalancerServer › 이벤트 › 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;