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 は転送計画を保持します: そのホスト、ポート、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;

イベントに戻る