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