GoGPT Best VPN GoSearch

OnWorksファビコン

haproxy-lua - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターを介して、OnWorks の無料ホスティング プロバイダーで haproxy-lua を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド haproxy-lua です。

プログラム:

NAME


haproxy-lua - haproxy-lua ドキュメント

ハプロキシ LUA ランニング コンテキスト


HAProxy で実行される Lua コードは、2 つの主なモードで処理できます。 最初のものは、
初期化 モード、そしてXNUMX番目は ランタイム モード.

・ の中に 初期化 モード、DNS 解決を実行できますが、ソケット I/O を実行できません。
この初期化モードでは、HAProxy は Lua の実行中にまだブロックされています。
プログラム。

・ の中に ランタイム モード、DNS 解決は実行できませんが、ソケットは使用できます。 の
Lua コードの実行はリクエスト処理と多重化されるため、Lua コードは
ブロッキングで実行されているようですが、そうではありません。

Lua コードは XNUMX つ以上のファイルにロードされます。 これらのファイルには、メイン コードと関数が含まれています。
Lua には 6 つの実行コンテキストがあります。

1.Lua ファイル ボディ コンテキスト. これは、Lua ファイルのロード中に実行されます。
ハプロキシ [グローバル] ディレクティブのあるセクション ルアロード. 初期化時に実行される
モード。 このセクションは、HAProxy で Lua バインディングを構成するために使用されます。

2. ルア INIT コンテキスト. HAProxy の直後に実行される Lua 関数です。
構成の解析。 実行は初期化モードです。 この文脈では、
HAProxy 環境は既に初期化されています。 構成を確認するのに便利です。
ソケット接続またはタスクの初期化。 これらの関数は本体で宣言されています
Lua 関数のコンテキスト core.register_init(). 関数のプロトタイプは、
次のように、戻り値もパラメータも持たない単純な関数: function fcn().

3. ルア タスク コンテキスト. HAProxyの起動後に実行されるLua関数です
スケジューラー、Lua関数でタスク宣言直後
core.register_task(). このコンテキストは、トラフィック処理と同時に行うことができます。 それは
ランタイムモードで実行されます。 関数のプロトタイプは単純な関数であり、
次のように、戻り値とパラメーターなし: function fcn().

4。 ザ アクション コンテキスト. 条件付きで実行される Lua 関数です。 これらのアクションは、
Luaディレクティブによって登録された "core.register_action()"。ルアのプロトタイプ
呼び出された関数は、何も返さず、オブジェクトを取る関数です
エントリとしてクラス TXN。 function fcn(txn).

5。 ザ サンプルフェッチ コンテキスト. この関数は、エントリ引数として TXN オブジェクトを取り、
文字列を返します。 これらのタイプの関数は、ブロッキング関数を実行できません。 彼ら
元の HAProxy サンプルフェッチの一部を集約して結果を返すのに役立ちます。
関数のプロトタイプは function string fcn(txn). これらの関数は、
Lua関数に登録 core.register_fetches(). 宣言された各サンプルフェッチは
文字列 "lua." が前に付きます。

注意: この関数が元のファイルに必要なデータを見つけられない可能性があります。
HAProxy はサンプル フェッチを行います。この場合、結果を返すことはできません。 このケースはまだない


6。 ザ コンバータ コンテキスト. 文字列を入力として受け取って返すLuaの関数です
出力として別の文字列。 これらのタイプの関数はステートレスであり、アクセスできません
任意のコンテキスト。 それらはブロッキング機能を実行しません。 呼び出しプロトタイプは function
string fcn(文字列). この関数はLua関数に登録できます
core.register_converters(). 宣言された各コンバーターには、文字列 "lua." がプレフィックスとして付けられます。

ハプロキシ LUA こんにちは WORLD


HAProxy 構成ファイル (hello_world.conf):

全体的な
ルアロードhello_world.lua

リッスン プロキシ
バインド 127.0.0.1:10001
tcp 要求検査遅延 1 秒
tcp-request コンテンツ使用サービス lua.hello_world

HAProxy Lua ファイル (hello_world.lua):

core.register_service("hello_world", "tcp", function(アプレット)
アプレット:send("こんにちは世界\n")
終わり)

この構成をテストするために HAProxy を開始する方法:

./haproxy -f hello_world.conf

他の端末では、telnet でテストできます:

#:~ Telnet 127.0.0.1 10001
こんにちは世界

class 芯()
「コア」クラスには、すべての HAProxy コア機能が含まれています。 これらの機能は便利です
実行フローの制御、フックの登録、グローバル マップの操作
またはACL、...

「コア」クラスは、基本的に HAProxy で提供されます。 いいえ 必要とする 行が必要です
これらの機能を使用します。

「コア」クラスは静的です。このタイプの新しいオブジェクトを作成することはできません。

core.emerg

返品
整数

この属性は整数で、ログレベル「緊急」の値が含まれます
とします。

コアアラート

返品
整数

この属性は整数で、loglevel "alert" (1) の値が含まれます。

コア.クリティカル

返品
整数

この属性は整数で、ログレベル「クリティカル」(2) の値が含まれます。

コア.エラー

返品
整数

この属性は整数で、ログレベル「エラー」(3) の値が含まれます。

コア.警告

返品
整数

この属性は整数で、ログレベル「警告」(4) の値が含まれます。

コア.通知

返品
整数

この属性は整数で、ログレベル「通知」(5) の値が含まれます。

コア情報

返品
整数

この属性は整数で、ログレベル "info" (6) の値が含まれます。

コア.デバッグ

返品
整数

この属性は整数で、ログレベル「debug」(7) の値が含まれます。

core.log(ログレベル、 メッセージ)
コンテキスト: body、init、task、action、sample-fetch、converter

この関数はログを送信します。 HAProxy に従って、ログが送信されます。
構成ファイル、デフォルトの syslog サーバー (構成されている場合)、および
許可されている場合は stderr。

Arguments

· loglevel (整数) -- メッセージに関連付けられたログ レベルです。 それは
0 から 7 までの数字。

· MSG (string) -- ログの内容。

詳細はこちら: core.emerg、core.alert、core.crit、core.err、core.warning、core.notice、
core.info、core.debug (ログ レベルの定義)

詳細はこちら: コード.デバッグ

詳細はこちら: コア情報

詳細はこちら: core.警告

詳細はこちら: core.アラート

コア.デバッグ(メッセージ)
コンテキスト: body、init、task、action、sample-fetch、converter

Arguments

· MSG (string) -- ログの内容。

詳細はこちら: ログ

以下と同じ仕事をします:

function デバッグ(メッセージ)
core.log(core.debug, msg)
end

コア情報(メッセージ)
コンテキスト: body、init、task、action、sample-fetch、converter

Arguments

· MSG (string) -- ログの内容。

詳細はこちら: ログ

function インフォ(メッセージ)
core.log(コア情報、メッセージ)
end

core.警告(メッセージ)
コンテキスト: body、init、task、action、sample-fetch、converter

Arguments

· MSG (string) -- ログの内容。

詳細はこちら: ログ

function 警告(メッセージ)
core.log(core.warning, msg)
end

core.アラート(メッセージ)
コンテキスト: body、init、task、action、sample-fetch、converter

Arguments

· MSG (string) -- ログの内容。

詳細はこちら: ログ

function 警告(メッセージ)
core.log(core.alert, msg)
end

core.add_acl(ファイル名、 キー)
コンテキスト: init、タスク、アクション、サンプルフェッチ、コンバーター

ACL を追加する キー ファイルによって参照される ACL リスト内 ファイル名.

Arguments

· ファイル名 (string) -- ACL エントリを参照するファイル名。

· キー (string) -- 追加されるキー。

core.del_acl(ファイル名、 キー)
コンテキスト: init、タスク、アクション、サンプルフェッチ、コンバーター

キーによって参照される ACL エントリを削除します キー によって参照される ACL のリスト内
ファイル名.

Arguments

· ファイル名 (string) -- ACL エントリを参照するファイル名。

· キー (string) -- 削除されるキー。

core.del_map(ファイル名, キー)
コンテキスト: init、タスク、アクション、サンプルフェッチ、コンバーター

参照されたマップのリストで、指定されたキーでインデックス付けされたマップ エントリを削除します
彼のファイル名で。

Arguments

· ファイル名 (string) -- マップ エントリを参照するファイル名。

· キー (string) -- 削除されるキー。

core.msleep(ミリ秒)
コンテキスト: 本体、初期化、タスク、アクション

当学校区の core.msleep() 指定されたミリ秒の間、Lua の実行を停止します。

Arguments

· ミリ秒 (整数) -- 必要なミリ秒。

core.register_action(名前, 行動、 機能)
コンテキスト: 体

アクションとして実行するLua関数を登録します。 登録されたすべてのアクションが使用可能
HAProxy ではプレフィックス「lua.」を使用します。 アクションは、入力として TXN オブジェクト クラスを取得します。

Arguments

· (string) -- コンバーターの名前です。

· 行動 (テーブル) -- HAProxy アクションを説明する文字列の表です。
に登録したい。 期待されるアクションは、「tcp-req」、「tcp-res」、
「http-req」または「http-res」。

· ファンク (function) -- コンバーターとして機能するために呼び出される Lua 関数です。

引数として使用される Lua 関数のプロトタイプは次のとおりです。

関数 (txn)

·

txn (TXN class): この is a TXN オブジェクト 中古 操作する  
現在のリクエストまたは TCP ストリーム。

ここでは、アクション登録の例を示します。 アクションは、「Hello world」を送信するだけです
ログ。

core.register_action("hello-world", { "tcp-req", "http-req" }, function(txn)
txn:Info("こんにちは世界")
終わり)
このコード例は、HAproxy 構成で次のように使用されます。

フロントエンド tcp_frt
モード TCP
tcp-request コンテンツ lua.hello-world

フロントエンド http_frt
モードhttp
http-リクエスト lua.hello-world

core.register_converters(名前, 機能)
コンテキスト: 体

コンバーターとして実行するLua関数を登録します。 登録されているすべてのコンバーターを
HAProxy でプレフィックス「lua.」で使用されます。 コンバーターは文字列を入力として取得し、
出力として文字列を返します。 登録された関数は、次のように最大 9 つの値を取ることができます。
パラメータ。 すべての値は文字列です。

Arguments

· (string) -- コンバーターの名前です。

· ファンク (function) -- コンバーターとして機能するために呼び出される Lua 関数です。

引数として使用される Lua 関数のプロトタイプは次のとおりです。

function(str, [p1 [, p2 [, ... [, p5]]]])

· STR (string): これは、文字列に自動的に変換された入力値です。

· p1 .. p5 (string): これは haroxy で宣言された文字列引数のリストです
構成ファイル。 引数の数は 5 を超えません。順序と
これらの性質は、通常、開発者によって選択されます。

core.register_fetches(名前、 機能)
コンテキスト: 体

サンプルフェッチとして実行する Lua 関数を登録します。 登録されているすべてのサンプル フェッチ
接頭辞「lua.」を付けて HAProxy で使用できます。 Lua サンプル fetch は文字列を返します
出力として。 登録された関数は、パラメーターとして最大 9 つの値を取ることができます。 全ての
値は文字列です。

Arguments

· (string) -- コンバーターの名前です。

· ファンク (function) -- サンプル フェッチとして機能するために呼び出される Lua 関数です。

引数として使用される Lua 関数のプロトタイプは次のとおりです。

文字列関数(txn, [p1 [, p2 [, ... [, p5]]]])

· txn (TXN class): これは、現在のリクエストに関連付けられた txn オブジェクトです。

· p1 .. p5 (string): これは haroxy で宣言された文字列引数のリストです
構成ファイル。 引数の数は 5 を超えません。順序と
これらの性質は、通常、開発者によって選択されます。

· 返品: 何らかのデータを含む文字列。現在値を返すことができない場合は nil。

ルアのサンプルコード:

core.register_fetches("こんにちは", function(txn)
「こんにちは」を返す
終わり)
HAProxy の構成例:

フロントエンドの例
http-request リダイレクトの場所 /%[lua.hello]

core.register_service(名前, モード、 機能)
コンテキスト: 体

サービスとして実行するLua関数を登録します。 登録されているすべてのサービスを
HAProxy でプレフィックス「lua.」で使用されます。 サービスは入力としてオブジェクト クラスを取得します
必要なモードに従って。

Arguments

· (string) -- コンバーターの名前です。

· モード (string) -- 必要なモードを説明する文字列です。 「tcp」のみまたは
「http」は許可されています。

· ファンク (function) -- コンバーターとして機能するために呼び出される Lua 関数です。

引数として使用される Lua 関数のプロトタイプは次のとおりです。

関数(アプレット)

· アプレット アプレット aになる アプレットTCP class または アプレットHTTP class. 種類にもよりますが
登録されたアプレットの。 の「http」値で登録されたアプレット モード
パラメータは アプレットHTTP class。 もし モード 値が「tcp」の場合、アプレットは
取得します アプレットTCP class.

警告: タイプ「http」のアプレットは「tcp-」から呼び出すことはできません' ルールセット。 のみ   'http-'
つまり、ルールセットから HTTP アプレットを呼び出すことはできません。
tcp モードのプロキシ。 タイプ「tcp」のアプレットは、どこからでも呼び出すことができます。

ここでは、サービス登録の例を示します。 サービスは「Hello world」を
http 応答。

core.register_service("hello-world", "http", 関数(アプレット)
ローカル応答 = "Hello World !"
アプレット:セットステータス(200)
アプレット:add_header("コンテンツの長さ", string.len(応答))
アプレット:add_header("コンテンツタイプ", "テキスト/プレーン")
アプレット:start_response()
アプレット:送信(応答)
終わり)
このコード例は、HAproxy 構成で次のように使用されます。

フロントエンドの例
http-request use-service lua.hello-world

core.register_init(関数)
コンテキスト: 体

構成解析後に実行する関数を登録します。 これは便利です
パラメータを確認してください。

Arguments

· ファンク (function) -- 初期化子として機能するために呼び出される Lua 関数です。

引数として使用される Lua 関数のプロトタイプは次のとおりです。

関数()
入力を必要とせず、出力も想定されていません。

core.register_task(関数)
コンテキスト: body、init、task、action、sample-fetch、converter

独立したタスクを登録して開始します。 タスクは、HAProxy メイン
スケジューラが起動します。 たとえば、このタイプのタスクを実行して複雑な作業を実行できます
健康チェック。

Arguments

· ファンク (function) -- 初期化子として機能するために呼び出される Lua 関数です。

引数として使用される Lua 関数のプロトタイプは次のとおりです。

関数()
入力を必要とせず、出力も想定されていません。

core.set_nice(いいね)
コンテキスト: タスク、アクション、サンプルフェッチ、コンバーター

現在のタスクまたは現在のセッションのナイスを変更します。

Arguments

· nice (整数) -- 適切な値。-1024 から 1024 の間である必要があります。

core.set_map(ファイル名, キー、 値)
コンテキスト: init、タスク、アクション、サンプルフェッチ、コンバーター

値を設定します キーに関連付けられた キー によって参照されるマップで ファイル名.

Arguments

· ファイル名 (string) -- マップ参照

· キー (string) -- 設定または置換するキー

· (string) -- 関連する値

core.sleep(int 秒)
コンテキスト: 本体、初期化、タスク、アクション

当学校区の コア.スリープ() 関数は、指定された秒の間に Lua の実行を停止します。

Arguments

· (整数) -- 必要な秒数。

コア.tcp()
コンテキスト: 初期化、タスク、アクション

この関数は、の新しいオブジェクトを返します ソケット とに提供されます。

返品
A ソケット class オブジェクト。

core.done(データ)
コンテキスト: body、init、task、action、sample-fetch、converter

Arguments

· データ (どれか) -- 呼び出し元にデータを返します。 で便利です
サンプルフェッチとサンプルコンバーター。

現在の Lua の実行を即座に停止し、呼び出し元に戻ります。
サンプル フェッチ、コンバーター、またはアクションを実行し、指定された値を返します (無視されます)。
アクション用)。 LUA プロセスが作業を終了し、
残りのコードを実行せずにコントロールを HAProxy に戻します。 それは次のように見ることができます
マルチレベルの「リターン」。

コア.利回り()
コンテキスト: タスク、アクション、サンプルフェッチ、コンバーター

HAProxy スケジューラーの手を返します。 LUA処理時に使用
多くの処理時間を消費します。

class フェッチ()
このクラスには、多くの内部 HAProxy サンプル フェッチが含まれています。 HAProxyを見る
彼女の使用方法の詳細については、「configuration.txt」ドキュメントを参照してください。 彼らです
章 7.3.2 から 7.3.6。

警告 一部のサンプル フェッチは、一部のコンテキストでは使用できません。 これらの制限
有用な場合は、このドキュメントで指定されています。

詳細はこちら: TXN.f

詳細はこちら: TXN.sf

フェッチは次の場合に役立ちます。

· システム時間の取得、

· 環境変数を取得し、

· 乱数を取得し、

· キュー内のユーザー数や数などの既知のバックエンド ステータス
接続が確立され、

· IP 送信元または送信先などのクライアント情報、

・スティックテーブルの取り扱い、

・SSL情報を整備し、

· ヘッダーやメソッドなどの HTTP 情報。

関数アクション(txn)
-- ソース IP を取得
ローカル clientip = txn.f:src()
end

class コンバーター()
このクラスには、多くの内部 HAProxy サンプル コンバーターが含まれています。 HAProxyを見る
彼女の使用方法の詳細については、ドキュメント「configuration.txt」を参照してください。 その
第7.3.1章。

詳細はこちら: TXN.c

詳細はこちら: TXN.sc

Converters は、ステートフルな変換を提供します。 それらは次の場合に役立ちます。

· 入力を base64 に変換し、

· 入力文字列にハッシュを適用する (djb2、crc32、sdbm、wt6)、

· フォーマット日付、

・jsonエスケープ、

· XNUMX つのリストを比較して優先言語を抽出し、

· 下または上のイワナに変わります。

· スティック テーブルを処理します。

class チャネル()
HAProxy は、リクエストの処理に XNUMX つのバッファーを使用します。 最初のものは使用されます
(クライアントからサーバーへの) 要求データを使用し、XNUMX 番目は次の目的で使用されます。
応答データ (サーバーからクライアントへ)。

各バッファには XNUMX 種類のデータが含まれます。 最初のタイプは受信データ待機です
処理のため。 XNUMX 番目の部分は、既に処理された送信データです。 いつもの、
着信データは、発信データとしてタグ付けされた後に処理され、最後に
送信されます。 次の関数は、これらのデータを操作するためのツールを提供します。
バッファ。

次の図は、チャネル クラス関数が適用される場所を示しています。

警告: リクエストアクションでレスポンスから読み取ることができず、
応答アクションで要求チャネルを読み取ることができません。
[画像]

Channel.dup(チャンネル)
この関数は、バッファ全体を含む文字列を返します。 データはそうではありません
バッファから削除し、後で再処理できます。

バッファがそれ以上データを受信できない場合は、'nil' 値が返されます。

Arguments

· チャンネル (クラスチャンネル) -- 操作されたチャネル。

返品
利用可能なすべてのデータまたは nil を含む文字列。

Channel.get(チャンネル)
この関数は、バッファ全体を含む文字列を返します。 データが消費される
バッファから。

バッファがそれ以上データを受信できない場合は、'nil' 値が返されます。

Arguments

· チャンネル (クラスチャンネル) -- 操作されたチャネル。

返品
利用可能なすべてのデータまたは nil を含む文字列。

Channel.getline(チャンネル)
この関数は、バッファの最初の行を含む文字列を返します。 データ
消費されます。 返されたデータに最後の「n」が含まれていない場合は、
バッファ内の最後の利用可能なデータ。

バッファがそれ以上データを受信できない場合は、'nil' 値が返されます。

Arguments

· チャンネル (クラスチャンネル) -- 操作されたチャネル。

返品
利用可能な行または nil を含む文字列。

Channel.set(チャンネル、 ストリング)
この関数は、バッファの内容を文字列で置き換えます。 関数は戻ります
コピーされた長さ、それ以外の場合は -1 を返します。

この関数で設定されたデータは送信されません。 彼らは HAProxy の終了を待ちます
処理中のため、バッファがいっぱいになる可能性があります。

Arguments

· チャンネル (クラスチャンネル) -- 操作されたチャネル。

· string (string) -- 送信されるデータ。

返品
コピーされたバイト数を含む整数または -1。

Channel.append(チャンネル、 ストリング)
この関数は、文字列引数をバッファの内容に追加します。 関数
コピーされた長さを返します。それ以外の場合は -1 を返します。

この関数で設定されたデータは送信されません。 彼らは HAProxy の終了を待ちます
処理中のため、バッファがいっぱいになる可能性があります。

Arguments

· チャンネル (クラスチャンネル) -- 操作されたチャネル。

· string (string) -- 送信されるデータ。

返品
コピーされたバイト数を含む整数または -1。

Channel.send(チャンネル、 ストリング)
この機能では、データの即時送信が必要でした。 接続が
閉じると、バッファは定期的にフラッシュされ、すべての文字列を送信できます。

Arguments

· チャンネル (クラスチャンネル) -- 操作されたチャネル。

· string (string) -- 送信されるデータ。

返品
コピーされたバイト数を含む整数または -1。

Channel.get_in_length(チャネル)
この関数は、バッファの入力部分の長さを返します。

Arguments

· チャンネル (クラスチャンネル) -- 操作されたチャネル。

返品
利用可能なバイト数を含む整数。

Channel.get_out_length(チャネル)
この関数は、バッファの出力部分の長さを返します。

Arguments

· チャンネル (クラスチャンネル) -- 操作されたチャネル。

返品
利用可能なバイト数を含む整数。

Channel.forward(チャンネル、 int)
この関数は、バッファの入力部分から出力部分にバイトを転送します。

Arguments

· チャンネル (クラスチャンネル) -- 操作されたチャネル。

· int型 (整数) -- 転送されるデータの量。

class HTTP()
このクラスには、すべての HTTP 操作関数が含まれています。

HTTP.req_get_headers(http)
すべてのリクエスト ヘッダーを含む配列を返します。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

返品
ヘッダーの配列。

詳細はこちら: HTTP.res_get_headers()

返される配列の形式は次のとおりです。

HTTP:req_get_headers()[' '][ ] = " "

ローカル hdr = HTTP:req_get_headers()
hdr["ホスト"][0] = "www.test.com"
hdr["受け入れる"][0] = "オーディオ/基本 q=1"
hdr["accept"][1] = "audio/*, q=0.2"
hdr["accept"][2] = "*/*, q=0.1"

HTTP.res_get_headers(http)
すべての応答ヘッダーを含む配列を返します。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

返品
ヘッダーの配列。

詳細はこちら: HTTP.req_get_headers()

返される配列の形式は次のとおりです。

HTTP:res_get_headers()[' '][ ] = " "

ローカル hdr = HTTP:req_get_headers()
hdr["ホスト"][0] = "www.test.com"
hdr["受け入れる"][0] = "オーディオ/基本 q=1"
hdr["accept"][1] = "audio/*, q=0.2"
hdr["accept"][2] = "*.*, q=0.1"

HTTP.req_add_header(http, 名、 値)
"name" で指定された名前の HTTP ヘッダー フィールドをリクエストに追加し、
その値は「値」で定義されます。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

· (string) -- ヘッダー名。

· (string) -- ヘッダー値。

詳細はこちら: HTTP.res_add_header()

HTTP.res_add_header(http, 名、 値)
"name" で指定された名前の HTTP ヘッダー フィールドを応答に追加し、
その値は「値」で定義されます。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

· (string) -- ヘッダー名。

· (string) -- ヘッダー値。

詳細はこちら: HTTP.req_add_header()

HTTP.req_del_header(http, 名)
"name" で指定された名前を持つリクエストのすべての HTTP ヘッダー フィールドを削除します。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

· (string) -- ヘッダー名。

詳細はこちら: HTTP.res_del_header()

HTTP.res_del_header(http, 名)
"name" で指定された名前を持つレスポンスのすべての HTTP ヘッダー フィールドを削除します。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

· (string) -- ヘッダー名。

詳細はこちら: HTTP.req_del_header()

HTTP.req_set_header(http, 名、 値)
この変数は、すべてのヘッダー「name」のすべての出現を、XNUMX つだけを含むものに置き換えます
値"。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

· (string) -- ヘッダー名。

· (string) -- ヘッダー値。

詳細はこちら: HTTP.res_set_header()

この関数は、次のコードと同じ働きをします:

関数 fcn(txn)
TXN.http:req_del_header("ヘッダー")
TXN.http:req_add_header("ヘッダー", "値")
end

HTTP.res_set_header(http, 名、 値)
この変数は、すべてのヘッダー「name」のすべての出現を、XNUMX つだけを含むものに置き換えます
値"。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

· (string) -- ヘッダー名。

· (string) -- ヘッダー値。

詳細はこちら: HTTP.req_rep_header()

HTTP.req_rep_header(http, 名、 正規表現、 交換)
ヘッダー フィールド「name」のすべての出現で正規表現に一致します。
「regex」に変換し、「replace」引数で置き換えます。 交換価値
1、2、... などの後方参照を含めることができます。この関数はリクエストで機能します。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

· (string) -- ヘッダー名。

· 正規表現 (string) -- 一致する正規表現。

· replace (string) -- 置換値。

詳細はこちら: HTTP.res_rep_header()

HTTP.res_rep_header(http, 名、 正規表現、 ストリング)
ヘッダー フィールド「name」のすべての出現で正規表現に一致します。
「regex」に変換し、「replace」引数で置き換えます。 交換価値
1、2、... などの後方参照を含めることができます。この関数はリクエストで機能します。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

· (string) -- ヘッダー名。

· 正規表現 (string) -- 一致する正規表現。

· replace (string) -- 置換値。

詳細はこちら: HTTP.req_replace_header()

HTTP.req_replace_value(http, 名、 正規表現、 交換)
「HTTP.req_replace_header()」のように機能しますが、正規表現と一致する点が異なります
全体ではなく、ヘッダー フィールド「name」のすべてのカンマ区切りの値
ヘッダ。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

· (string) -- ヘッダー名。

· 正規表現 (string) -- 一致する正規表現。

· replace (string) -- 置換値。

詳細はこちら: HTTP.req_replace_header()

詳細はこちら: HTTP.res_replace_value()

HTTP.res_replace_value(http, 名、 正規表現、 交換)
「HTTP.res_replace_header()」のように機能しますが、正規表現と一致する点が異なります
全体ではなく、ヘッダー フィールド「name」のすべてのカンマ区切りの値
ヘッダ。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

· (string) -- ヘッダー名。

· 正規表現 (string) -- 一致する正規表現。

· replace (string) -- 置換値。

詳細はこちら: HTTP.res_replace_header()

詳細はこちら: HTTP.req_replace_value()

HTTP.req_set_method(http, 方法)
パラメータ「メソッド」でリクエストメソッドを書き換えます。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

· 方法 (string) -- 新しいメソッド。

HTTP.req_set_path(http, パス)
「path」パラメータでリクエストパスを書き換えます。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

· path (string) -- 新しいパス。

HTTP.req_set_query(http, クエリ)
最初の疑問符の後に表示されるリクエストのクエリ文字列を書き換えます
("?") をパラメーター "query" と共に使用します。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

· クエリー (string) -- 新しいクエリ。

HTTP.req_set_uri(http, うり)
パラメータ「uri」でリクエストURIを書き換えます。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

· URI (string) -- 新しい uri。

HTTP.res_set_status(http, 状態)
パラメータ「code」でレスポンスステータスコードを書き換えます。 その理由に注意してください
新しいコードに自動的に適応します。

Arguments

· HTTP (クラス_http) -- 関連する http オブジェクト。

· status (整数) -- 新しい応答ステータス コード。

class TXN()
txn クラスには、http または tcp トランザクションに関連するすべての関数が含まれています。
(tcp ストリームは tcp トランザクションと同じですが、HTTP トランザクションであることに注意してください。
tcp ストリームと同じではありません)。

このクラスを使用すると、リクエストからデータを取得し、変更して、
それを転送します。

このクラスが提供するすべての機能は、コンテキストで使用できます
サンプルフェッチ   行動.

TXN.c

返品
An 変換装置 class.

この属性には、Converters クラス オブジェクトが含まれます。

TXN.sc

返品
An 変換装置 class.

この属性には、Converters クラス オブジェクトが含まれます。 このオブジェクトの機能
常に文字列を返します。

TXN.f

返品
An フェッチ class.

この属性には、Fetches クラス オブジェクトが含まれます。

TXN.sf

返品
An フェッチ class.

この属性には、Fetches クラス オブジェクトが含まれます。 このオブジェクトの機能
常に文字列を返します。

TXN.req

返品
An チャネル class.

この属性には、リクエスト バッファのチャネル クラス オブジェクトが含まれます。

TXN.res

返品
An チャネル class.

この属性には、応答バッファーのチャネル クラス オブジェクトが含まれます。

TXN.http

返品
An HTTP class.

この属性には、HTTP クラス オブジェクトが含まれます。 プロキシが
「モードhttp」が有効になっています。

TXN.log(TXN, ログレベル、 メッセージ)
この関数はログを送信します。 HAProxy に従って、ログが送信されます。
構成ファイル、デフォルトの syslog サーバー (構成されている場合)、および
許可されている場合は stderr。

Arguments

· txn (クラス_txn) -- データを含むクラス txn オブジェクト。

· loglevel (整数) -- メッセージに関連付けられたログ レベルです。 それは
0 から 7 までの数字。

· MSG (string) -- ログの内容。

詳細はこちら: core.emerg、core.alert、core.crit、core.err、core.warning、core.notice、
core.info、core.debug (ログ レベルの定義)

詳細はこちら: TXN.deflog

詳細はこちら: TXN.デバッグ

詳細はこちら: TXN.情報

詳細はこちら: TXN.警告

詳細はこちら: TXN.アラート

TXN.deflog(TXN, メッセージ)
に関連付けられたプロキシのデフォルトのログレベルでログ行を送信します。
トランザクション。

Arguments

· txn (クラス_txn) -- データを含むクラス txn オブジェクト。

· MSG (string) -- ログの内容。

詳細はこちら: TXN.log

TXN.Debug(txn, メッセージ)

Arguments

· txn (クラス_txn) -- データを含むクラス txn オブジェクト。

· MSG (string) -- ログの内容。

詳細はこちら: TXN.log

以下と同じ仕事をします:

関数 Debug(txn, msg)
TXN.log(txn、core.debug、msg)
end

TXN.Info(txn, メッセージ)

Arguments

· txn (クラス_txn) -- データを含むクラス txn オブジェクト。

· MSG (string) -- ログの内容。

詳細はこちら: TXN.log

関数 Debug(txn, msg)
TXN.log(txn、core.info、msg)
end

TXN.警告(txn, メッセージ)

Arguments

· txn (クラス_txn) -- データを含むクラス txn オブジェクト。

· MSG (string) -- ログの内容。

詳細はこちら: TXN.log

関数 Debug(txn, msg)
TXN.log(txn、core.warning、msg)
end

TXN.アラート(txn, メッセージ)

Arguments

· txn (クラス_txn) -- データを含むクラス txn オブジェクト。

· MSG (string) -- ログの内容。

詳細はこちら: TXN.log

関数 Debug(txn, msg)
TXN.log(txn、core.alert、msg)
end

TXN.get_priv(txn)
現在のトランザクションに保存されている Lua データを返します ( TXN.set_priv())
関数。 データが格納されていない場合は、nil 値を返します。

Arguments

· txn (クラス_txn) -- データを含むクラス txn オブジェクト。

返品
以前に保存された不透明なデータ、または何も利用できない場合は nil。

TXN.set_priv(txn, データ)
現在の HAProxy トランザクションにデータを格納します。 このアクションは古いものを置き換えます
保存されたデータ。

Arguments

· txn (クラス_txn) -- データを含むクラス txn オブジェクト。

· データ (不透明な) -- トランザクションに格納されるデータ。

TXN.set_var(TXN, var、 値)
Lua 型を HAProxy 型に変換し、 variable に格納します。

Arguments

· txn (クラス_txn) -- データを含むクラス txn オブジェクト。

· VAR (string) -- HAProxy 変数に応じた変数名
構文。

· (不透明な) -- 変数に格納されるデータ。

TXN.get_var(TXN, 変数)
変数コンバーターに格納されたデータを Lua 型で返します。

Arguments

· txn (クラス_txn) -- データを含むクラス txn オブジェクト。

· VAR (string) -- HAProxy 変数に応じた変数名
構文。

TXN.get_headers(txn)
この関数は、ヘッダーの配列を返します。

Arguments

· txn (クラス_txn) -- データを含むクラス txn オブジェクト。

返品
ヘッダーの配列。

TXN.完了(txn)
この関数は、トランザクションおよび関連するセッションの処理を終了します。
重大なエラーが検出されたとき、または後で処理を終了するために使用できます。
一部のデータがクライアントに返されました (例: リダイレクト)。

Arguments

· txn (クラス_txn) -- データを含むクラス txn オブジェクト。

TXN.set_loglevel(txn, ログレベル)
現在のリクエストのログ レベルを変更するために使用されます。 「ログレベル」は
0 から 7 までの整数。

Arguments

· txn (クラス_txn) -- データを含むクラス txn オブジェクト。

· loglevel (整数) -- 必要なログ レベル。 この変数は、次のいずれかになります。

詳細はこちら: 芯。

TXN.set_tos(txn, トス)
クライアントに送信されるパケットの TOS または DSCP フィールド値を設定するために使用されます。
これをサポートするプラットフォームで「tos」に渡される値。

Arguments

· txn (クラス_txn) -- データを含むクラス txn オブジェクト。

· TOS (整数) -- 新しい TOS os DSCP。

TXN.set_mark(txn, マーク)
クライアントに送信されるすべてのパケットの Netfilter MARK を値に設定するために使用されます。
それをサポートするプラットフォームで「マーク」を渡しました。

Arguments

· txn (クラス_txn) -- データを含むクラス txn オブジェクト。

· マーク (整数) -- マーク値。

class ソケット()
このクラスは、Lua Socket クラスと互換性がある必要があります。 「クライアント」のみ
機能が利用可能です。 Lua ソケットのドキュメントを参照してください。

http://w3.impa.br/~diego/software/luasocket/tcp.html

Socket.close(ソケット)
TCP オブジェクトを閉じます。 オブジェクトが使用する内部ソケットが閉じられ、ローカル
オブジェクトがバインドされたアドレスは、他のアプリケーションで使用できるようになります。 いいえ
さらなる操作 (close メソッドへのさらなる呼び出しを除く) は、
閉じたソケット。

Arguments

· ソケット (クラスソケット) -- 操作されたソケットです。

注: 使用済みのソケットが不要になったら、すべて閉じることが重要です。
多くのシステムでは、各ソケットはファイル記述子を使用しますが、システムが制限されています
資力。 ガベージ コレクションされたオブジェクトは、破棄される前に自動的に閉じられます。
けれども。

Socket.connect(ソケット、 住所[、 ポート])
ソケット オブジェクトをリモート ホストに接続しようとします。

エラーの場合、メソッドは nil に続いてエラーを説明する文字列を返します。
成功した場合、メソッドは 1 を返します。

Arguments

· ソケット (クラスソケット) -- 操作されたソケットです。

· 住所 (string) -- IP アドレスまたはホスト名を指定できます。 以下を参照してください
詳しくは。

· ポート (整数) -- [1..64K] の範囲の整数でなければなりません。

返品
1 またはゼロ。

アドレス フィールド拡張により、connect() 関数を使用して接続できます。
TCP 以外のストリーム。 simpleipv4 または ipv6 アドレスを含む構文は、
基本的に想定されるフォーマット。 この形式にはポートが必要です。

受け入れられる他の形式は、「/socket/path」のようなソケット パスであり、接続を許可します。
ソケットに。 抽象名前空間は接頭辞「abns@」でサポートされ、最後に
ファイル記述子は、プレフィックス「fd@」を付けて渡すことができます。 プレフィックス「ipv4@」、「ipv6@」
および「unix@」もサポートされています。 ポートは文字列に渡すことができます。 構文
「127.0.0.1:1234」が有効です。 この場合、パラメータ ポート 無視されます。

Socket.connect_ssl(ソケット、 住所、 ポート)
関数 socket:connect と同じ動作ですが、SSL を使用します。

Arguments

· ソケット (クラスソケット) -- 操作されたソケットです。

返品
1 またはゼロ。

Socket.getpeername(ソケット)
接続されたクライアント オブジェクトのリモート側に関する情報を返します。

ピアの IP アドレスとそれに続くポート番号を含む文字列を返します。
ピアが接続に使用しています。 エラーの場合、メソッドは nil を返します。

Arguments

· ソケット (クラスソケット) -- 操作されたソケットです。

返品
サーバー情報を含む文字列。

Socket.getsockname(ソケット)
オブジェクトに関連付けられたローカル アドレス情報を返します。

このメソッドは、ローカル IP アドレスとポート番号を含む文字列を返します。 の
エラーの場合、メソッドは nil を返します。

Arguments

· ソケット (クラスソケット) -- 操作されたソケットです。

返品
クライアント情報を含む文字列。

Socket.receive(ソケット[, パターン[、 プレフィックス]])
指定された読み取りパターンに従って、クライアント オブジェクトからデータを読み取ります。 パターン
Lua ファイルの I/O 形式に準拠し、すべてのファイル間のパフォーマンスの違い
パターンは無視できます。

Arguments

· ソケット (クラスソケット) -- 操作されたソケットです。

· パターン (文字列|整数) -- 必要なものを説明してください (以下を参照)。

· 接頭辞 (string) -- 返されたデータのプレフィックスとなる文字列。

返品
必要なデータまたは nil を含む文字列。

パターンは次のいずれかです。

·

`*a`: 読み込み from   ソケット まで   接続 is 閉じた。 いいえ
行末変換が実行されます。

·

`*l`: 読み込み a ライン of 클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다. from   ソケット。 当学校区の ライン is 終わる by a
LF 文字 (ASCII 10)、オプションで CR 文字 (ASCII 13) が先行します。
CR および LF 文字は、返される行には含まれません。 実際には、
すべての CR 文字はパターンによって無視されます。 これがデフォルトのパターンです。

·

数: 原因   方法 〜へ read a 指定の of バイト from  
ソケット。 プレフィックスは、先頭に連結するオプションの文字列です
返す前に受信したデータの。

· 空の: パターンが空の場合、デフォルトのオプションは *l.

成功した場合、メソッドは受け取ったパターンを返します。 エラーの場合、
メソッドは nil を返し、その後に文字列 'closed' のエラー メッセージが続きます
送信が完了する前に接続が閉じられた場合、または文字列
操作中にタイムアウトが発生した場合の「タイムアウト」。 また、エラーの後に
メッセージの場合、関数は送信の部分的な結果を返します。

重要な注意: この関数は大幅に変更されました。 以前は複数をサポートしていました
パターン (ただし、この機能が使用されているのを見たことがありません) であり、現在は使用されていません。
部分的な結果は、成功した結果と同じ方法で返されていました。 これ
最後の機能は、すべての関数がエラー時に nil を返すべきであるという考えに違反していました。 したがって
それも変更されました。

Socket.send(ソケット、 データ[、 始める[、 終わり]])
クライアント オブジェクトを介してデータを送信します。

Arguments

· ソケット (クラスソケット) -- 操作されたソケットです。

· データ (string) -- 送信されるデータ。

· start (整数) -- データのバッファ内の開始位置。
送信されます。

· end (整数) -- データのバッファ内の終了位置。
送信されました。

返品
下記参照。

データは送信する文字列です。 オプションの引数 i と j は、
標準の string.sub Lua 関数を使用して、送信する部分文字列を選択できるようにします。

成功した場合、メソッドは [start, end] 内の最後のバイトのインデックスを返します。
送信済みです。 start が 1 または存在しない場合、これは実質的に
送信された合計バイト数。 エラーの場合、メソッドは nil を返し、その後に
エラー メッセージの後に、[start, end] 内の最後のバイトのインデックスが続きます。
送られました。 その次のバイトからやり直してください。 エラー
送信前に接続が閉じられた場合、メッセージを「閉じる」ことができます
完了したか、処理中にタイムアウトが発生した場合は文字列 'timeout'
操作。

注: 出力はバッファリングされません。 小さい文字列の場合は、常に連結する方がよい
それらをLuaで(「..」演算子を使用して)、代わりにXNUMX回の呼び出しで結果を送信します
メソッドを数回呼び出します。

Socket.setoption(ソケット、 オプション[、 価値])
互換性のために実装されただけで、この cal は何もしません。

Socket.settimeout(ソケット、 価値[、 モード])
オブジェクトのタイムアウト値を変更します。 すべての I/O 操作がブロックされています。 それか
つまり、send、receive、accept メソッドの呼び出しは無期限にブロックされます。
操作が完了するまで。 settimeout メソッドは、量の制限を定義します
I/O メソッドがブロックできる時間。 タイムアウト時間が経過すると、影響を受ける
メソッドはあきらめて、エラー コードで失敗します。

待機する時間は、値パラメーターとして秒単位で指定されます。

タイムアウト モードはボットによって実装され、設定可能なタイムアウトは非アクティブのみです
内部バッファ送信の完了または受信データの待機時間。

Arguments

· ソケット (クラスソケット) -- 操作されたソケットです。

· (整数) -- タイムアウト値。

class 地図()
このクラスは、HAProxy マップでルックアップを行うことを許可します。 宣言されたマップは、
ランタイム中に HAProxy 管理ソケットを介して変更されます。

デフォルト = 「米国」

-- マップの作成とロード
geo = Map.new("geo.map", Map.ip);

-- ユーザーの国を返す新しいフェッチを作成します
core.register_fetches("国", 関数(txn)
ローカルソース;
ローカル loc;

src = txn.f:fhdr("x-forwarded-for");
if (src == nil) then
src = txn.f:src()
if (src == nil) then
デフォルトを返します。
end
end

-- ルックアップを実行
loc = geo:lookup(src);

if (loc == nil) then
デフォルトを返します。
end

場所を返します。
終わり);

Map.int
HAProxy configuration.txt ファイルの「Using ACLs and fetching samples」の章を参照してください。
このパターン マッチング方法を理解するには、「ACL の基礎」の章を参照してください。

マップ.ip HAProxy configuration.txt ファイルの「Using ACLs and fetching samples」の章を参照してください。
このパターン マッチング方法を理解するには、「ACL の基礎」の章を参照してください。

Map.str
HAProxy configuration.txt ファイルの「Using ACLs and fetching samples」の章を参照してください。
このパターン マッチング方法を理解するには、「ACL の基礎」の章を参照してください。

地図.beg
HAProxy configuration.txt ファイルの「Using ACLs and fetching samples」の章を参照してください。
このパターン マッチング方法を理解するには、「ACL の基礎」の章を参照してください。

マップサブ
HAProxy configuration.txt ファイルの「Using ACLs and fetching samples」の章を参照してください。
このパターン マッチング方法を理解するには、「ACL の基礎」の章を参照してください。

Map.dir
HAProxy configuration.txt ファイルの「Using ACLs and fetching samples」の章を参照してください。
このパターン マッチング方法を理解するには、「ACL の基礎」の章を参照してください。

マップ.ダム
HAProxy configuration.txt ファイルの「Using ACLs and fetching samples」の章を参照してください。
このパターン マッチング方法を理解するには、「ACL の基礎」の章を参照してください。

マップ終了
HAProxy configuration.txt ファイルの「Using ACLs and fetching samples」の章を参照してください。
このパターン マッチング方法を理解するには、「ACL の基礎」の章を参照してください。

地図.reg
HAProxy configuration.txt ファイルの「Using ACLs and fetching samples」の章を参照してください。
このパターン マッチング方法を理解するには、「ACL の基礎」の章を参照してください。

Map.new(ファイル、 方法)
マップを作成してロードします。

Arguments

· file (string) -- マップを含むファイルです。

· 方法 (整数) -- マップ パターン マッチング方式です。 属性を見る
Map クラスの。

返品
クラス Map オブジェクト。

詳細はこちら: マップ属性。

Map.lookup(マップ、 str)
マップでルックアップを実行します。

Arguments

· 地図 (クラスマップ) -- クラス Map オブジェクトです。

· STR (string) -- キーとして使用される文字列です。

返品
結果を含む文字列。一致しない場合は nil。

Map.slookup(マップ、 str)
マップでルックアップを実行します。

Arguments

· 地図 (クラスマップ) -- クラス Map オブジェクトです。

· STR (string) -- キーとして使用される文字列です。

返品
結果を含む文字列、または一致しない場合は空の文字列。

class アプレットHTTP()
このクラスは、「http」モードを必要とするアプレットで使用されます。 http アプレットは
に登録される core.register_service() 関数。 彼らはのために使用されます
HAProxy の背後にあるサーバーのように http リクエストを処理します。

これは、Hello World のサンプル コードです。

core.register_service("hello-world", "http", 関数(アプレット)
ローカル応答 = "Hello World !"
アプレット:セットステータス(200)
アプレット:add_header("コンテンツの長さ", string.len(応答))
アプレット:add_header("コンテンツタイプ", "テキスト/プレーン")
アプレット:start_response()
アプレット:送信(応答)
終わり)

アプレットHTTP.c

返品
A 変換装置 class

この属性には、Converters クラス オブジェクトが含まれます。

アプレットHTTP.sc

返品
A 変換装置 class

この属性には、Converters クラス オブジェクトが含まれます。 このオブジェクトの機能
常に文字列を返します。

アプレットHTTP.f

返品
A フェッチ class

この属性には、Fetches クラス オブジェクトが含まれます。 アプレットの実行に注意してください
place は有効な HAProxy コア HTTP トランザクションにアクセスできないため、いくつかのサンプル
HTTP に依存する値 (hdr、パスなど) に関連する機能は利用できません。

アプレットHTTP.sf

返品
A フェッチ class

この属性には、Fetches クラス オブジェクトが含まれます。 このオブジェクトの機能
常に文字列を返します。 アプレットの実行場所からはアクセスできないことに注意してください。
有効な HAProxy コア HTTP トランザクションなので、HTTP に関連するいくつかのサンプル フェクト
依存値 (hdr、パスなど) は使用できません。

アプレットHTTP.メソッド

返品
string

属性メソッドは、HTTP メソッドを含む文字列を返します。

AppletHTTP.バージョン

返品
string

version 属性は、HTTP 要求のバージョンを含む文字列を返します。

アプレットHTTP.パス

返品
string

属性 path は、HTTP 要求パスを含む文字列を返します。

アプレットHTTP.qs

返品
string

属性 qs は、HTTP 要求クエリ文字列を含む文字列を返します。

アプレットHTTP.長さ

返品
整数

属性 length は、HTTP 本文の長さを含む整数を返します。

アプレットHTTP.headers

返品
配列

属性 headers は、HTTP ヘッダーを含む配列を返します。 ヘッダー
名前は常に小文字です。 ヘッダー名は
各リクエストで 0 回、値は最初のインデックス値として XNUMX でインデックス付けされます。 配列
次の形式があります。

AppletHTTP.headers[' '][ ] = " "

AppletHTTP.headers["ホスト"][0] = "www.test.com"
AppletHTTP.headers["accept"][0] = "audio/basic q=1"
AppletHTTP.headers["accept"][1] = "audio/*, q=0.2"
AppletHTTP.headers["accept"][2] = "*/*, q=0.1"

アプレットHTTP.headers
すべてのリクエスト ヘッダーを含む配列が含まれます。

AppletHTTP.set_status(アプレット、 コード)
この関数は、応答の HTTP ステータス コードを設定します。 許可されたコードは
100へ599。

Arguments

· アプレット (class_AppletHTTP) -- アン アプレットHTTP class

· コード (整数) -- クライアントに返されるステータス コード。

AppletHTTP.add_header(アプレット、 名、 値)
この関数は、応答にヘッダーを追加します。 重複したヘッダーは折りたたまれません。
特別なヘッダー コンテンツの長さ 応答の長さを決定するために使用されます。 それであれば
存在しない、 転送エンコーディング: チャンク 設定され、関数からのすべての書き込み
アプレットHTTP:send() 塊になる。

Arguments

· アプレット (class_AppletHTTP) -- アン アプレットHTTP class

· (string) -- ヘッダー名

· (string) -- ヘッダー値

AppletHTTP.start_response(アプレット)
この関数は、HTTP エンジンに、それが処理して送信できることを示します。
応答ヘッダー。 これが呼び出された後、応答にヘッダーを追加することはできません。 私達
使用できません アプレットHTTP:send() 関数の場合 アプレットHTTP:start_response() ではありません
と呼ばれます。

Arguments

· アプレット (class_AppletHTTP) -- アン アプレットHTTP class

AppletHTTP.getline(アプレット)
この関数は、http 本文から XNUMX 行を含む文字列を返します。 もしデータが
返されたデータには最終的な '\n' が含まれていません
ストリーム終了前。

Arguments

· アプレット (class_AppletHTTP) -- アン アプレットHTTP class

返品
文字列。 ストリームの最後に到達すると、文字列が空になることがあります。

AppletHTTP.receive(アプレット[, サイズ])
指定された read に従って、HTTP ボディからデータを読み取ります。 サイズ。 もし サイズ is
欠落している場合、関数はストリームのすべてのコンテンツを最後まで読み取ろうとします。 もしも
  サイズ http 本体よりも大きい場合、使用可能なデータ量を返します。

Arguments

· アプレット (class_AppletHTTP) -- アン アプレットHTTP class

· サイズ (整数) -- 必要な読み取りサイズ。

返品
常に文字列を返します。接続が閉じている場合、文字列は空にすることができます。

AppletHTTP.send(アプレット、 メッセージ)
メッセージを送ります MSG http リクエストの本文。

Arguments

· アプレット (class_AppletHTTP) -- アン アプレットHTTP class

· MSG (string) -- 送信するメッセージ。

class アプレットTCP()
このクラスは、「tcp」モードを必要とするアプレットで使用されます。 TCP アプレットは
に登録した core.register_service() 関数。 それらは処理に使用されます
HAProxy の背後にあるサーバーのような tcp ストリーム。

アプレットTCP.c

返品
A 変換装置 class

この属性には、Converters クラス オブジェクトが含まれます。

アプレットTCP.sc

返品
A 変換装置 class

この属性には、Converters クラス オブジェクトが含まれます。 このオブジェクトの機能
常に文字列を返します。

アプレットTCP.f

返品
A フェッチ class

この属性には、Fetches クラス オブジェクトが含まれます。

アプレットTCP.sf

返品
A フェッチ class

この属性には、Fetches クラス オブジェクトが含まれます。

AppletTCP.getline(アプレット)
この関数は、ストリームから XNUMX 行を含む文字列を返します。 もしデータが
返されたデータには最終的な '\n' が含まれていません
ストリーム終了前。

Arguments

· アプレット (class_AppletTCP) -- アン アプレットTCP class

返品
文字列。 ストリームの最後に到達すると、文字列が空になることがあります。

AppletTCP.receive(アプレット[, サイズ])
指定された読み取りに従って、TCP ストリームからデータを読み取ります。 サイズ。 もし サイズ
が見つからない場合、関数はストリームのすべてのコンテンツを最後まで読み取ろうとします。

Arguments

· アプレット (class_AppletTCP) -- アン アプレットTCP class

· サイズ (整数) -- 必要な読み取りサイズ。

返品
常に文字列を返します。接続が閉じている場合、文字列は空にすることができます。

AppletTCP.send(appletmsg)
ストリームでメッセージを送信します。

Arguments

· アプレット (class_AppletTCP) -- アン アプレットTCP class

· MSG (string) -- 送信するメッセージ。

多くの便利な lua ライブラリがここにあります:

· https://lua-toolbox.com/

Redis アクセス:

· https://github.com/nrk/redis-lua

これは、HAProxy での Redis ライブラリの使用に関する例です。 各呼び出しに注意してください
ソケット接続が失敗した場合、このライブラリの関数のいずれかがエラーをスローする可能性があります。

-- redis ライブラリをロードします
ローカル redis = require("redis");

関数 do_something(txn)

-- 新しい TCP ソケットを作成して接続します
ローカル tcp = core.tcp();
TCP:タイムアウトの設定(1);
tcp: 接続 ("127.0.0.1", 6379);

-- この新しいソケットで redis ライブラリを使用します
ローカル クライアント = redis.connect({socket=tcp});
クライアント:ping();

end

OpenSSL:

· http://mkottman.github.io/luacrypto/index.html

· https://github.com/brunoos/luasec/wiki

onworks.net サービスを使用してオンラインで haproxy-lua を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad




×
Advertisement
❤️ここでショッピング、予約、購入してください。料金はかかりません。これにより、サービスが無料で維持されます。