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;

이벤트로 돌아가기