英語フランス語スペむン語

Ad


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 文字列 fcn(txn). これらの関数は、
Lua関数に登録 core.register_fetches(). 宣蚀された各サンプルフェッチは
文字列 "lua." が前に付きたす。

泚意: この関数が元のファむルに必芁なデヌタを芋぀けられない可胜性がありたす。
HAProxy はサンプル フェッチを行いたす。この堎合、結果を返すこずはできたせん。 このケヌスはただない
。

6。 ザ コンバヌタ コンテキスト. 文字列を入力ずしお受け取っお返すLuaの関数です
出力ずしお別の文字列。 これらのタむプの関数はステヌトレスであり、アクセスできたせん
任意のコンテキスト。 それらはブロッキング機胜を実行したせん。 呌び出しプロトタむプは function
文字列 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 (文字列) -- ログの内容。

芋る 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 (文字列) -- ログの内容。

芋る ログ

以䞋ず同じ仕事をしたす:

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

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

Arguments

· MSG (文字列) -- ログの内容。

芋る ログ

function むンフォ(メッセヌゞ)
core.log(コア情報、メッセヌゞ)
end

core.è­Šå‘Š(メッセヌゞ)
コンテキスト: body、init、task、action、sample-fetch、converter

Arguments

· MSG (文字列) -- ログの内容。

芋る ログ

function è­Šå‘Š(メッセヌゞ)
core.log(core.warning, msg)
end

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

Arguments

· MSG (文字列) -- ログの内容。

芋る ログ

function è­Šå‘Š(メッセヌゞ)
core.log(core.alert, msg)
end

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

ACL を远加する キヌ ファむルによっお参照される ACL リスト内 ファむル名.

Arguments

· ファむル名 (文字列) -- ACL ゚ントリを参照するファむル名。

· キヌ (文字列) -- 远加されるキヌ。

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

キヌによっお参照される ACL ゚ントリを削陀したす キヌ によっお参照される ACL のリスト内
ファむル名.

Arguments

· ファむル名 (文字列) -- ACL ゚ントリを参照するファむル名。

· キヌ (文字列) -- 削陀されるキヌ。

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

参照されたマップのリストで、指定されたキヌでむンデックス付けされたマップ ゚ントリを削陀したす
圌のファむル名で。

Arguments

· ファむル名 (文字列) -- マップ ゚ントリを参照するファむル名。

· キヌ (文字列) -- 削陀されるキヌ。

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

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

Arguments

· ミリ秒 (æ•Žæ•°) -- 必芁なミリ秒。

core.register_action(名前, 行動、 機胜)
コンテキスト 䜓

アクションずしお実行するLua関数を登録したす。 登録されたすべおのアクションが䜿甚可胜
HAProxy ではプレフィックス「lua.」を䜿甚したす。 アクションは、入力ずしお TXN オブゞェクト クラスを取埗したす。

Arguments

· 名 (文字列) -- コンバヌタヌの名前です。

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

· ファンク (function) -- コンバヌタヌずしお機胜するために呌び出される Lua 関数です。

匕数ずしお䜿甚される Lua 関数のプロトタむプは次のずおりです。

関数 (txn)

·

txn (TXN class): この is a TXN オブゞェクト 䞭叀 for 操䜜する  
珟圚のリク゚ストたたは 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

· 名 (文字列) -- コンバヌタヌの名前です。

· ファンク (function) -- コンバヌタヌずしお機胜するために呌び出される Lua 関数です。

匕数ずしお䜿甚される Lua 関数のプロトタむプは次のずおりです。

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

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

· p1 .. p5 (文字列): これは haroxy で宣蚀された文字列匕数のリストです
構成ファむル。 匕数の数は 5 を超えたせん。順序ず
これらの性質は、通垞、開発者によっお遞択されたす。

core.register_fetches(名前、 機胜)
コンテキスト 䜓

サンプルフェッチずしお実行する Lua 関数を登録したす。 登録されおいるすべおのサンプル フェッチ
接頭蟞「lua.」を付けお HAProxy で䜿甚できたす。 Lua サンプル fetch は文字列を返したす
出力ずしお。 登録された関数は、パラメヌタヌずしお最倧 9 ぀の倀を取るこずができたす。 党おの
倀は文字列です。

Arguments

· 名 (文字列) -- コンバヌタヌの名前です。

· ファンク (function) -- サンプル フェッチずしお機胜するために呌び出される Lua 関数です。

匕数ずしお䜿甚される Lua 関数のプロトタむプは次のずおりです。

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

· txn (TXN class): これは、珟圚のリク゚ストに関連付けられた txn オブゞェクトです。

· p1 .. p5 (文字列): これは haroxy で宣蚀された文字列匕数のリストです
構成ファむル。 匕数の数は 5 を超えたせん。順序ず
これらの性質は、通垞、開発者によっお遞択されたす。

· 返品: 䜕らかのデヌタを含む文字列。珟圚倀を返すこずができない堎合は nil。

ルアのサンプルコヌド:

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

フロント゚ンドの䟋
http-request リダむレクトの堎所 /%[lua.hello]

core.register_service(名前, モヌド、 機胜)
コンテキスト 䜓

サヌビスずしお実行するLua関数を登録したす。 登録されおいるすべおのサヌビスを
HAProxy でプレフィックス「lua.」で䜿甚されたす。 サヌビスは入力ずしおオブゞェクト クラスを取埗したす
必芁なモヌドに埓っお。

Arguments

· 名 (文字列) -- コンバヌタヌの名前です。

· モヌド (文字列) -- 必芁なモヌドを説明する文字列です。 「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

· ファむル名 (文字列) -- マップ参照

· キヌ (文字列) -- 蚭定たたは眮換するキヌ

· 倀 (文字列) -- 関連する倀

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

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

· 文字列 (文字列) -- 送信されるデヌタ。

返品
コピヌされたバむト数を含む敎数たたは -1。

Channel.append(チャンネル、 ストリング
この関数は、文字列匕数をバッファの内容に远加したす。 関数
コピヌされた長さを返したす。それ以倖の堎合は -1 を返したす。

この関数で蚭定されたデヌタは送信されたせん。 圌らは HAProxy の終了を埅ちたす
凊理䞭のため、バッファがいっぱいになる可胜性がありたす。

Arguments

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

· 文字列 (文字列) -- 送信されるデヌタ。

返品
コピヌされたバむト数を含む敎数たたは -1。

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

Arguments

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

· 文字列 (文字列) -- 送信されるデヌタ。

返品
コピヌされたバむト数を含む敎数たたは -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 オブゞェクト。

· 名 (文字列) -- ヘッダヌ名。

· 倀 (文字列) -- ヘッダヌ倀。

芋る HTTP.res_add_header()

HTTP.res_add_header(http, 名、 倀
"name" で指定された名前の HTTP ヘッダヌ フィヌルドを応答に远加し、
その倀は「倀」で定矩されたす。

Arguments

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

· 名 (文字列) -- ヘッダヌ名。

· 倀 (文字列) -- ヘッダヌ倀。

芋る HTTP.req_add_header()

HTTP.req_del_header(http, 名
"name" で指定された名前を持぀リク゚ストのすべおの HTTP ヘッダヌ フィヌルドを削陀したす。

Arguments

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

· 名 (文字列) -- ヘッダヌ名。

芋る HTTP.res_del_header()

HTTP.res_del_header(http, 名
"name" で指定された名前を持぀レスポンスのすべおの HTTP ヘッダヌ フィヌルドを削陀したす。

Arguments

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

· 名 (文字列) -- ヘッダヌ名。

芋る HTTP.req_del_header()

HTTP.req_set_header(http, 名、 倀
この倉数は、すべおのヘッダヌ「name」のすべおの出珟を、XNUMX ぀だけを含むものに眮き換えたす
倀"。

Arguments

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

· 名 (文字列) -- ヘッダヌ名。

· 倀 (文字列) -- ヘッダヌ倀。

芋る 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 オブゞェクト。

· 名 (文字列) -- ヘッダヌ名。

· 倀 (文字列) -- ヘッダヌ倀。

芋る HTTP.req_rep_header()

HTTP.req_rep_header(http, 名、 正芏衚珟、 亀換
ヘッダヌ フィヌルド「name」のすべおの出珟で正芏衚珟に䞀臎したす。
「regex」に倉換し、「replace」匕数で眮き換えたす。 亀換䟡倀
1、2、... などの埌方参照を含めるこずができたす。この関数はリク゚ストで機胜したす。

Arguments

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

· 名 (文字列) -- ヘッダヌ名。

· 正芏衚珟 (文字列) -- 䞀臎する正芏衚珟。

· replace (文字列) -- 眮換倀。

芋る HTTP.res_rep_header()

HTTP.res_rep_header(http, 名、 正芏衚珟、 ストリング
ヘッダヌ フィヌルド「name」のすべおの出珟で正芏衚珟に䞀臎したす。
「regex」に倉換し、「replace」匕数で眮き換えたす。 亀換䟡倀
1、2、... などの埌方参照を含めるこずができたす。この関数はリク゚ストで機胜したす。

Arguments

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

· 名 (文字列) -- ヘッダヌ名。

· 正芏衚珟 (文字列) -- 䞀臎する正芏衚珟。

· replace (文字列) -- 眮換倀。

芋る HTTP.req_replace_header()

HTTP.req_replace_value(http, 名、 正芏衚珟、 亀換
「HTTP.req_replace_header()」のように機胜したすが、正芏衚珟ず䞀臎する点が異なりたす
党䜓ではなく、ヘッダヌ フィヌルド「name」のすべおのカンマ区切りの倀
ヘッダ。

Arguments

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

· 名 (文字列) -- ヘッダヌ名。

· 正芏衚珟 (文字列) -- 䞀臎する正芏衚珟。

· replace (文字列) -- 眮換倀。

芋る HTTP.req_replace_header()

芋る HTTP.res_replace_value()

HTTP.res_replace_value(http, 名、 正芏衚珟、 亀換
「HTTP.res_replace_header()」のように機胜したすが、正芏衚珟ず䞀臎する点が異なりたす
党䜓ではなく、ヘッダヌ フィヌルド「name」のすべおのカンマ区切りの倀
ヘッダ。

Arguments

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

· 名 (文字列) -- ヘッダヌ名。

· 正芏衚珟 (文字列) -- 䞀臎する正芏衚珟。

· replace (文字列) -- 眮換倀。

芋る HTTP.res_replace_header()

芋る HTTP.req_replace_value()

HTTP.req_set_method(http, 方法
パラメヌタ「メ゜ッド」でリク゚ストメ゜ッドを曞き換えたす。

Arguments

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

· 方法 (文字列) -- 新しいメ゜ッド。

HTTP.req_set_path(http, パス
「path」パラメヌタでリク゚ストパスを曞き換えたす。

Arguments

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

· path (文字列) -- 新しいパス。

HTTP.req_set_query(http, ク゚リ
最初の疑問笊の埌に衚瀺されるリク゚ストのク゚リ文字列を曞き換えたす
("?") をパラメヌタヌ "query" ず共に䜿甚したす。

Arguments

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

· ク゚リヌ (文字列) -- 新しいク゚リ。

HTTP.req_set_uri(http, うり
パラメヌタ「uri」でリク゚ストURIを曞き換えたす。

Arguments

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

· URI (文字列) -- 新しい 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 (文字列) -- ログの内容。

芋る 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 (文字列) -- ログの内容。

芋る TXN.log

TXN.Debug(txn, メッセヌゞ)

Arguments

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

· MSG (文字列) -- ログの内容。

芋る TXN.log

以䞋ず同じ仕事をしたす:

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

TXN.Info(txn, メッセヌゞ)

Arguments

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

· MSG (文字列) -- ログの内容。

芋る TXN.log

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

TXN.è­Šå‘Š(txn, メッセヌゞ)

Arguments

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

· MSG (文字列) -- ログの内容。

芋る TXN.log

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

TXN.アラヌト(txn, メッセヌゞ)

Arguments

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

· MSG (文字列) -- ログの内容。

芋る 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 (文字列) -- HAProxy 倉数に応じた倉数名
構文。

· 倀 (䞍透明な) -- 倉数に栌玍されるデヌタ。

TXN.get_var(TXN, 倉数)
倉数コンバヌタヌに栌玍されたデヌタを Lua 型で返したす。

Arguments

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

· VAR (文字列) -- 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

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

· 䜏所 (文字列) -- 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

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

· パタヌン (文字列|æ•Žæ•°) -- 必芁なものを説明しおください (以䞋を参照)。

· 接頭蟞 (文字列) -- 返されたデヌタのプレフィックスずなる文字列。

返品
必芁なデヌタたたは nil を含む文字列。

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

·

`*a`: 読み蟌み から   ゜ケット たで   接続 is 閉じた。 いいえ
行末倉換が実行されたす。

·

`*l`: 読み蟌み a ラむン of 큎띌우드 êž°ë°˜ AI/ML및 고성능 컎퓚팅을 통한 디지턞 튞윈의 Ʞ쎈 – Edward Hsu, Rescale CPO 많은 엔지니얎링 쀑심 Ʞ업에게 큎띌우드는 R&D디지턞 전환의 첫 닚계음 뿐입니닀. 큎띌우드 자원을 활용핎 엔지니얎링 팀의 제앜을 핎결하는 닚계륌 넘얎, 시뮬레읎션 욎영을 통합하고 최적화하며, 궁극적윌로는 몚덞 Ʞ반의 협업곌 의사 결정을 지원하여 신제품을 결정할 때 데읎터 êž°ë°˜ 엔지니얎링을 적용하고자 합니닀. Rescale은 읎러한 혁신을 돕Ʞ 위핎 컎퓚팅 추천 엔진, 통합 데읎터 팹뾌멭, 메타데읎터 ꎀ늬 등을 개발하고 있습니닀. 읎번 자늬륌 빌렀 비슈니슀 겜쟁력 제고륌 위한 디지턞 튞윈 및 디지턞 슀레드 전략 개발 방법에 대한 읞사읎튞륌 나누고자 합니닀. から   ゜ケット。   ラむン is 終わる by a
LF 文字 (ASCII 10)、オプションで CR 文字 (ASCII 13) が先行したす。
CR および LF 文字は、返される行には含たれたせん。 実際には、
すべおの CR 文字はパタヌンによっお無芖されたす。 これがデフォルトのパタヌンです。

·

数 原因   方法 〜ぞ read a 指定の 数 of バむト から  
゜ケット。 プレフィックスは、先頭に連結するオプションの文字列です
返す前に受信したデヌタの。

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

成功した堎合、メ゜ッドは受け取ったパタヌンを返したす。 ゚ラヌの堎合、
メ゜ッドは nil を返し、その埌に文字列 'closed' の゚ラヌ メッセヌゞが続きたす
送信が完了する前に接続が閉じられた堎合、たたは文字列
操䜜䞭にタむムアりトが発生した堎合の「タむムアりト」。 たた、゚ラヌの埌に
メッセヌゞの堎合、関数は送信の郚分的な結果を返したす。

重芁な泚意: この関数は倧幅に倉曎されたした。 以前は耇数をサポヌトしおいたした
パタヌン (ただし、この機胜が䜿甚されおいるのを芋たこずがありたせん) であり、珟圚は䜿甚されおいたせん。
郚分的な結果は、成功した結果ず同じ方法で返されおいたした。 これ
最埌の機胜は、すべおの関数が゚ラヌ時に nil を返すべきであるずいう考えに違反しおいたした。 したがっお
それも倉曎されたした。

Socket.send(゜ケット、 デヌタ[、 始める[、 終わり]]
クラむアント オブゞェクトを介しおデヌタを送信したす。

Arguments

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

· デヌタ (文字列) -- 送信されるデヌタ。

· 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 (文字列) -- マップを含むファむルです。

· 方法 (æ•Žæ•°) -- マップ パタヌン マッチング方匏です。 属性を芋る
Map クラスの。

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

芋る マップ属性。

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

Arguments

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

· STR (文字列) -- キヌずしお䜿甚される文字列です。

返品
結果を含む文字列。䞀臎しない堎合は nil。

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

Arguments

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

· STR (文字列) -- キヌずしお䜿甚される文字列です。

返品
結果を含む文字列、たたは䞀臎しない堎合は空の文字列。

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.メ゜ッド

返品
文字列

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

AppletHTTP.バヌゞョン

返品
文字列

version 属性は、HTTP 芁求のバヌゞョンを含む文字列を返したす。

アプレットHTTP.パス

返品
文字列

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

アプレットHTTP.qs

返品
文字列

属性 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

· 名 (文字列) -- ヘッダヌ名

· 倀 (文字列) -- ヘッダヌ倀

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 (文字列) -- 送信するメッセヌゞ。

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 (文字列) -- 送信するメッセヌゞ。

倚くの䟿利な 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