Tiếng AnhTiếng PhápTiếng Tây Ban Nha

Ad


Biểu tượng yêu thích OnWorks

haproxy-lua - Trực tuyến trên đám mây

Chạy haproxy-lua trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks trên Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS

Đây là lệnh haproxy-lua có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


haproxy-lua - tài liệu haproxy-lua

HAPROXY LUA ĐANG CHẠY CUỘC THI


Mã Lua được thực thi trong HAProxy có thể được xử lý ở 2 chế độ chính. Cái đầu tiên là
khởi tạo chế độ, và thứ hai là thời gian chạy chế độ.

· Bên trong khởi tạo chế độ, chúng tôi có thể thực hiện giải DNS, nhưng chúng tôi không thể thực hiện I / O socket.
Trong chế độ khởi tạo này, HAProxy vẫn bị chặn trong quá trình thực thi Lua
chương trình.

· Bên trong thời gian chạy chế độ, chúng tôi không thể thực hiện giải DNS, nhưng chúng tôi có thể sử dụng các ổ cắm. Các
việc thực thi mã Lua được ghép với quá trình xử lý yêu cầu, vì vậy mã Lua
dường như được chạy trong chặn, nhưng nó không phải là trường hợp.

Mã Lua được tải trong một hoặc nhiều tệp. Các tệp này chứa mã và chức năng chính.
Lua có 6 bối cảnh thực thi.

1. Tập tin Lua thân hình bối cảnh. Nó được thực thi trong quá trình tải tệp Lua trong
HAProxy [toàn cầu] phần có chỉ thị tải lua. Nó được thực thi khi khởi tạo
chế độ. Phần này được sử dụng để định cấu hình liên kết Lua trong HAProxy.

2. Lúa trong đó bối cảnh. Nó là một hàm Lua được thực thi ngay sau HAProxy
phân tích cú pháp cấu hình. Việc thực thi đang ở chế độ khởi tạo. Trong bối cảnh này,
Môi trường HAProxy đã được khởi tạo. Sẽ rất hữu ích khi kiểm tra cấu hình, hoặc
khởi tạo các kết nối hoặc tác vụ ổ cắm. Các hàm này được khai báo trong phần thân
ngữ cảnh với hàm Lua core.register_init (). Nguyên mẫu của hàm là một
hàm đơn giản không có giá trị trả về và không có tham số, như thế này: chức năng fcn ().

3. Lúa công việc bối cảnh. Nó là một hàm Lua được thực thi sau khi bắt đầu HAProxy
bộ lập lịch và ngay sau khi khai báo nhiệm vụ với hàm Lua
core.register_task (). Ngữ cảnh này có thể đồng thời với quá trình xử lý lưu lượng. Nó là
được thực thi trong chế độ thời gian chạy. Nguyên mẫu của hàm là một hàm đơn giản không có
trả về giá trị và không có tham số, như thế này: chức năng fcn ().

4. Các hoạt động bối cảnh. Nó là một hàm Lua được thực thi có điều kiện. Những hành động này là
đăng ký theo chỉ thị Lua "core.register_action ()". Nguyên mẫu của Lua
hàm được gọi là một hàm với không trả về bất kỳ thứ gì và nhận một đối tượng
lớp TXN làm mục nhập. chức năng fcn (txn).

5. Các lấy mẫu bối cảnh. Hàm này nhận một đối tượng TXN làm đối số mục nhập và
trả về một chuỗi. Các loại chức năng này không thể thực hiện bất kỳ chức năng chặn nào. Họ
rất hữu ích để tổng hợp một số tìm nạp mẫu HAProxy ban đầu và trả về kết quả.
Nguyên mẫu của hàm là chức năng chuỗi fcn (txn). Các chức năng này có thể
đã đăng ký với chức năng Lua core.register_fetches (). Mỗi lần tìm nạp mẫu được khai báo là
có tiền tố là chuỗi "lua.".

LƯU Ý: Có thể hàm này không tìm thấy dữ liệu cần thiết trong bản gốc
Trong trường hợp này, tìm nạp mẫu HAProxy không thể trả về kết quả. Trường hợp này chưa
hỗ trợ

6. Các chuyển đổi bối cảnh. Đây là một hàm Lua lấy một chuỗi làm đầu vào và trả về
một chuỗi khác làm đầu ra. Các loại chức năng này là không trạng thái, nó không thể truy cập vào
bất kỳ bối cảnh nào. Chúng không thực hiện bất kỳ chức năng chặn nào. Nguyên mẫu cuộc gọi là chức năng
chuỗi fcn (chuỗi). Chức năng này có thể được đăng ký với chức năng Lua
core.register_converters (). Mỗi trình chuyển đổi được khai báo có tiền tố là chuỗi "lua.".

HAPROXY LUA CHÀO BẠN THẾ GIỚI


Tệp cấu hình HAProxy (hello_world.conf):

toàn cầu
tải lua hello_world.lua

nghe proxy
ràng buộc 127.0.0.1:10001
tcp-request check-delay 1s
dịch vụ sử dụng nội dung yêu cầu tcp lua.hello_world

Tệp HAProxy Lua (xin chào_world.lua):

core.register_service ("hello_world", "tcp", function (applet)
applet: send ("hello world \ n")
kết thúc)

Cách khởi động HAProxy để kiểm tra cấu hình này:

./haproxy -f hello_world.conf

Trên thiết bị đầu cuối khác, bạn có thể kiểm tra bằng telnet:

#: ~ telnet 127.0.0.1 10001
hello thế giới

tốt nghiệp lớp XNUMX cốt lõi()
Lớp "lõi" chứa tất cả các chức năng cốt lõi của HAProxy. Các chức năng này rất hữu ích
để kiểm soát luồng thực thi, đăng ký móc, thao tác với bản đồ toàn cầu
hoặc ACL, ...

về cơ bản lớp "lõi" được cung cấp với HAProxy. Không yêu cầu dòng được yêu cầu
sử dụng các chức năng này.

Lớp "lõi" là lớp tĩnh, không thể tạo một đối tượng mới kiểu này.

lõi.emerg

Trả hàng
số nguyên

Thuộc tính này là một số nguyên, nó chứa giá trị của cấp độ logle "khẩn cấp"
(0).

lõi.alert

Trả hàng
số nguyên

Thuộc tính này là một số nguyên, nó chứa giá trị của "alert" cấp độ loglevel (1).

lõi.crit

Trả hàng
số nguyên

Thuộc tính này là một số nguyên, nó chứa giá trị của loglevel "tới hạn" (2).

lõi.err

Trả hàng
số nguyên

Thuộc tính này là một số nguyên, nó chứa giá trị của "lỗi" loglevel (3).

lõi.warning

Trả hàng
số nguyên

Thuộc tính này là một số nguyên, nó chứa giá trị của "cảnh báo" mức loglevel (4).

lõi.notice

Trả hàng
số nguyên

Thuộc tính này là một số nguyên, nó chứa giá trị của "thông báo" loglevel (5).

lõi.info

Trả hàng
số nguyên

Thuộc tính này là một số nguyên, nó chứa giá trị của loglevel "thông tin" (6).

lõi.debug

Trả hàng
số nguyên

Thuộc tính này là một số nguyên, nó chứa giá trị của loglevel "debug" (7).

core.log (loglevel, tin nhắn)
bối cảnh: phần thân, init, tác vụ, hành động, tìm nạp mẫu, trình chuyển đổi

Chức năng này gửi một bản ghi. Nhật ký được gửi, theo HAProxy
tệp cấu hình, trên máy chủ nhật ký hệ thống mặc định nếu nó được định cấu hình và trên
stderr nếu nó được cho phép.

Lập luận

· mức độ đăng nhập (số nguyên) - Là mức nhật ký được liên kết với thông báo. Nó là một
số từ 0 đến 7.

· msg (chuỗi) - Nội dung nhật ký.

Xem core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (định nghĩa mức nhật ký)

Xem mã.Debug

Xem lõi.Thông tin

Xem lõi.Warning

Xem lõi.Alert

lõi.Debug(tin nhắn)
bối cảnh: phần thân, init, tác vụ, hành động, tìm nạp mẫu, trình chuyển đổi

Lập luận

· msg (chuỗi) - Nội dung nhật ký.

Xem đăng nhập

Thực hiện công việc tương tự hơn:

chức năng Gỡ lỗi(tin nhắn)
core.log (core.debug, msg)
cuối

lõi.Thông tin(tin nhắn)
bối cảnh: phần thân, init, tác vụ, hành động, tìm nạp mẫu, trình chuyển đổi

Lập luận

· msg (chuỗi) - Nội dung nhật ký.

Xem đăng nhập

chức năng Thông tin(tin nhắn)
core.log (core.info, msg)
cuối

lõi.Warning(tin nhắn)
bối cảnh: phần thân, init, tác vụ, hành động, tìm nạp mẫu, trình chuyển đổi

Lập luận

· msg (chuỗi) - Nội dung nhật ký.

Xem đăng nhập

chức năng Cảnh báo(tin nhắn)
core.log (core.warning, msg)
cuối

lõi.Alert(tin nhắn)
bối cảnh: phần thân, init, tác vụ, hành động, tìm nạp mẫu, trình chuyển đổi

Lập luận

· msg (chuỗi) - Nội dung nhật ký.

Xem đăng nhập

chức năng Cảnh báo(tin nhắn)
core.log (core.alert, msg)
cuối

core.add_acl (tên tệp, Chìa khóa)
bối cảnh: init, tác vụ, hành động, lấy mẫu, bộ chuyển đổi

Thêm ACL chính trong danh sách ACL được tham chiếu bởi tệp tên tập tin.

Lập luận

· tên tập tin (chuỗi) - tên tệp tham chiếu đến các mục ACL.

· chính (chuỗi) - khóa sẽ được thêm vào.

core.del_acl (tên tệp, Chìa khóa)
bối cảnh: init, tác vụ, hành động, lấy mẫu, bộ chuyển đổi

Xóa mục nhập ACL được tham chiếu bởi khóa chính trong danh sách ACL được tham chiếu bởi
tên tập tin.

Lập luận

· tên tập tin (chuỗi) - tên tệp tham chiếu đến các mục ACL.

· chính (chuỗi) - khóa sẽ bị xóa.

core.del_map (tên tệp, Chìa khóa)
bối cảnh: init, tác vụ, hành động, lấy mẫu, bộ chuyển đổi

Xóa mục nhập bản đồ được lập chỉ mục bằng khóa được chỉ định trong danh sách bản đồ được tham chiếu
theo tên tệp của anh ấy.

Lập luận

· tên tập tin (chuỗi) - tên tệp tham chiếu đến các mục bản đồ.

· chính (chuỗi) - khóa sẽ bị xóa.

lõi.msleep(mili giây)
bối cảnh: cơ thể, init, nhiệm vụ, hành động

Sản phẩm core.msleep () dừng thực thi Lua giữa các mili giây được chỉ định.

Lập luận

· mili giây (số nguyên) - mili giây bắt buộc.

core.register_action (tên, hành động, chức năng)
bối cảnh: cơ thể người

Đăng ký một hàm Lua được thực thi dưới dạng hành động. Tất cả các hành động đã đăng ký có thể được sử dụng
trong HAProxy với tiền tố "lua.". Một hành động nhận một lớp đối tượng TXN làm đầu vào.

Lập luận

· tên (chuỗi) - là tên của bộ chuyển đổi.

· hành động (bàn) - là một bảng chuỗi mô tả các hành động HAProxy ai
muốn đăng ký. Các hành động mong đợi là 'tcp-req', 'tcp-res',
'http-req' hoặc 'http-res'.

· chức năng (chức năng) - là hàm Lua được gọi để hoạt động như một bộ chuyển đổi.

Nguyên mẫu của hàm Lua được sử dụng làm đối số là:

hàm (txn)

·

txn (TXN tốt nghiệp lớp XNUMX): điều này is a TXN vật đã sử dụng cho thao túng các
yêu cầu hiện tại hoặc luồng TCP.

Đây, một ví dụ về đăng ký hành động. action juste gửi 'Hello world' trong
nhật ký.

core.register_action ("hello-world", {"tcp-req", "http-req"}, function (txn)
txn: Thông tin ("Xin chào thế giới")
kết thúc)
Mã ví dụ này được sử dụng trong cấu hình HAproxy như sau:

giao diện người dùng tcp_frt
chế độ tcp
nội dung yêu cầu tcp lua.hello-world

giao diện người dùng http_frt
chế độ http
http-request lua.hello-world

core.register_converters (tên, chức năng)
bối cảnh: cơ thể người

Đăng ký một hàm Lua được thực thi dưới dạng bộ chuyển đổi. Tất cả các trình chuyển đổi đã đăng ký có thể được
được sử dụng trong HAProxy với tiền tố "lua.". Một bộ chuyển đổi lấy một chuỗi làm đầu vào và
trả về một chuỗi dưới dạng đầu ra. Hàm đã đăng ký có thể nhận tối đa 9 giá trị như
tham số. Tất cả giá trị là chuỗi.

Lập luận

· tên (chuỗi) - là tên của bộ chuyển đổi.

· chức năng (chức năng) - là hàm Lua được gọi để hoạt động như một bộ chuyển đổi.

Nguyên mẫu của hàm Lua được sử dụng làm đối số là:

hàm (str, [p1 [, p2 [, ... [, p5]]]])

· str (chuỗi): đây là giá trị đầu vào được tự động chuyển đổi trong chuỗi.

· p1 .. p5 (chuỗi): đây là danh sách các đối số chuỗi được khai báo trong haroxy
tập tin cấu hình. Số lượng đối số không vượt quá 5. Thứ tự và
bản chất của những thứ này do nhà phát triển lựa chọn theo quy ước.

core.register_fetches (tên, chức năng)
bối cảnh: cơ thể người

Đăng ký một hàm Lua được thực thi dưới dạng tìm nạp mẫu. Tất cả các lần tìm nạp mẫu đã đăng ký
có thể được sử dụng trong HAProxy với tiền tố "lua.". Tìm nạp mẫu Lua trả về một chuỗi
dưới dạng đầu ra. Hàm đã đăng ký có thể nhận tối đa 9 giá trị làm tham số. Tất cả
giá trị là các chuỗi.

Lập luận

· tên (chuỗi) - là tên của bộ chuyển đổi.

· chức năng (chức năng) - là hàm Lua được gọi để hoạt động như tìm nạp mẫu.

Nguyên mẫu của hàm Lua được sử dụng làm đối số là:

hàm chuỗi (txn, [p1 [, p2 [, ... [, p5]]]])

· txn (TXN tốt nghiệp lớp XNUMX): đây là đối tượng txn được liên kết với yêu cầu hiện tại.

· p1 .. p5 (chuỗi): đây là danh sách các đối số chuỗi được khai báo trong haroxy
tập tin cấu hình. Số lượng đối số không vượt quá 5. Thứ tự và
bản chất của những thứ này do nhà phát triển lựa chọn theo quy ước.

· Trả hàng: Một chuỗi chứa một số dữ liệu, không có giá trị nào nếu giá trị không thể được trả lại ngay bây giờ.

mã ví dụ lua:

core.register_fetches ("xin chào", hàm (txn)
quay lại "xin chào"
kết thúc)
Cấu hình ví dụ HAProxy:

ví dụ về giao diện người dùng
vị trí chuyển hướng yêu cầu http /%[lua.hello]

core.register_service (tên, chế độ, chức năng)
bối cảnh: cơ thể người

Đăng ký một hàm Lua được thực thi như một dịch vụ. Tất cả các dịch vụ đã đăng ký có thể được
được sử dụng trong HAProxy với tiền tố "lua.". Một dịch vụ nhận một lớp đối tượng làm đầu vào
theo chế độ yêu cầu.

Lập luận

· tên (chuỗi) - là tên của bộ chuyển đổi.

· chế độ (chuỗi) - là chuỗi mô tả chế độ cần thiết. Chỉ 'tcp' hoặc
'http' được cho phép.

· chức năng (chức năng) - là hàm Lua được gọi để hoạt động như một bộ chuyển đổi.

Nguyên mẫu của hàm Lua được sử dụng làm đối số là:

hàm (applet)

· applet applet sẽ là một AppletTCP tốt nghiệp lớp XNUMX hoặc một AppletHTTP tốt nghiệp lớp XNUMX. Nó phụ thuộc vào loại
của applet đã đăng ký. Một applet được đăng ký với giá trị 'http' cho chế độ
tham số sẽ nhận được một AppletHTTP tốt nghiệp lớp XNUMX. Nếu chế độ giá trị là 'tcp', applet sẽ
được một AppletTCP tốt nghiệp lớp XNUMX.

cảnh báo: Không thể gọi các Applet loại 'http' từ 'tcp-' bộ quy tắc. Chỉ có các 'http-'
các bộ quy tắc được ủy quyền, điều này có nghĩa là không thể gọi một tiểu ứng dụng HTTP từ một
proxy ở chế độ tcp. Applet loại 'tcp' có thể được gọi từ anywhre.

Đây, một ví dụ về đăng ký dịch vụ. dịch vụ chỉ gửi một 'Xin chào thế giới' dưới dạng
phản hồi http.

core.register_service ("hello-world", "http", function (applet)
local response = "Xin chào Thế giới!"
tiểu dụng:set_status(200)
applet: add_header ("content-length", string.len (response))
applet: add_header ("loại nội dung", "văn bản / đơn giản")
applet: start_response ()
applet: gửi (phản hồi)
kết thúc)
Mã ví dụ này được sử dụng trong cấu hình HAproxy như sau:

ví dụ về giao diện người dùng
dịch vụ sử dụng yêu cầu http lua.hello-world

core.register_init (func)
bối cảnh: cơ thể người

Đăng ký một chức năng được thực thi sau khi phân tích cú pháp cấu hình. Điều này rất hữu ích cho
kiểm tra bất kỳ thông số nào.

Lập luận

· chức năng (chức năng) - là hàm Lua được gọi để hoạt động như bộ khởi tạo.

Nguyên mẫu của hàm Lua được sử dụng làm đối số là:

hàm số()
Nó không cần đầu vào và không có đầu ra được mong đợi.

core.register_task (func)
bối cảnh: phần thân, init, tác vụ, hành động, tìm nạp mẫu, trình chuyển đổi

Đăng ký và bắt đầu nhiệm vụ độc lập. Nhiệm vụ được bắt đầu khi HAProxy chính
bộ lập lịch bắt đầu. Ví dụ, loại tác vụ này có thể được thực thi để thực hiện các
kiểm tra sức khỏe.

Lập luận

· chức năng (chức năng) - là hàm Lua được gọi để hoạt động như bộ khởi tạo.

Nguyên mẫu của hàm Lua được sử dụng làm đối số là:

hàm số()
Nó không cần đầu vào và không có đầu ra được mong đợi.

core.set_nice (đẹp)
bối cảnh: tác vụ, hành động, tìm nạp mẫu, trình chuyển đổi

Thay đổi điều tốt đẹp của nhiệm vụ hiện tại hoặc phiên hiện tại.

Lập luận

· tốt đẹp (số nguyên) - giá trị tốt, nó phải nằm trong khoảng từ -1024 đến 1024.

core.set_map (tên tệp, Chìa khóa, giá trị)
bối cảnh: init, tác vụ, hành động, lấy mẫu, bộ chuyển đổi

đặt giá trị giá trị liên quan đến chìa khóa chính trong bản đồ được tham chiếu bởi tên tập tin.

Lập luận

· tên tập tin (chuỗi) - tài liệu tham khảo Bản đồ

· chính (chuỗi) - phím để thiết lập hoặc thay thế

· giá trị (chuỗi) - giá trị liên quan

core.sleep (int giây)
bối cảnh: cơ thể, init, nhiệm vụ, hành động

Sản phẩm core.sleep () các hàm dừng việc thực thi Lua giữa các giây được chỉ định.

Lập luận

· giây (số nguyên) - giây cần thiết.

core.tcp ()
bối cảnh: khởi tạo, nhiệm vụ, hành động

Hàm này trả về một đối tượng mới của một ổ cắm lớp học.

Trả hàng
A Ổ cắm tốt nghiệp lớp XNUMX vật.

core.done (dữ liệu)
bối cảnh: phần thân, init, tác vụ, hành động, tìm nạp mẫu, trình chuyển đổi

Lập luận

· dữ liệu (bất kì) - Trả lại một số dữ liệu cho người gọi. Nó hữu ích với
lấy mẫu và chuyển đổi mẫu.

Ngay lập tức dừng thực thi Lua hiện tại và quay trở lại trình gọi có thể là
một lần tìm nạp mẫu, một bộ chuyển đổi hoặc một hành động và trả về giá trị được chỉ định (bị bỏ qua
cho các hành động). Nó được sử dụng khi quy trình LUA kết thúc công việc và muốn đưa
trở lại điều khiển cho HAProxy mà không thực thi đoạn mã còn lại. Nó có thể được coi là
một sự "trở lại" đa cấp.

core.yield ()
bối cảnh: tác vụ, hành động, tìm nạp mẫu, trình chuyển đổi

Trả lại bàn tay cho bộ lập lịch HAProxy. Nó được sử dụng khi xử lý LUA
tiêu tốn nhiều thời gian xử lý.

tốt nghiệp lớp XNUMX Tìm nạp ()
Lớp này chứa rất nhiều lần tìm nạp mẫu HAProxy nội bộ. Xem HAProxy
tài liệu "config.txt" để biết thêm thông tin về cách sử dụng của cô ấy. họ đang
các chương từ 7.3.2 đến 7.3.6.

cảnh báo một số tìm nạp mẫu không khả dụng trong một số ngữ cảnh. Những hạn chế này
được chỉ định trong tài liệu này khi tài liệu hữu ích.

Xem TXN.f

Xem TXN.sf

Tìm nạp rất hữu ích cho:

· Lấy thời gian hệ thống,

· Lấy biến môi trường,

· Lấy số ngẫu nhiên,

· Trạng thái phụ trợ đã biết như số lượng người dùng trong hàng đợi hoặc số lượng
kết nối được thiết lập,

· Thông tin khách hàng như nguồn hoặc đích ip,

· Đối phó với các bảng dính,

· Thông tin SSL được thiết lập,

· Thông tin HTTP như tiêu đề hoặc phương thức.

chức năng hoạt động (txn)
- Nhận IP nguồn
local clientip = txn.f: src ()
cuối

tốt nghiệp lớp XNUMX Người chuyển đổi ()
Lớp này chứa rất nhiều bộ chuyển đổi mẫu HAProxy nội bộ. Xem HAProxy
tài liệu "config.txt" để biết thêm thông tin về cách sử dụng của cô ấy. Đó là
Chương 7.3.1.

Xem TXN.c

Xem TXN.sc

Bộ chuyển đổi cung cấp chuyển đổi trạng thái đầy đủ. Chúng hữu ích cho:

· Chuyển đổi đầu vào sang base64,

· Áp dụng hàm băm trên chuỗi đầu vào (djb2, crc32, sdbm, wt6),

· Định dạng ngày tháng,

· Json thoát,

· Trích xuất ngôn ngữ ưa thích so sánh hai danh sách,

· Chuyển sang ký tự thường hoặc ký tự trên,

· Đối phó với các bảng dính.

tốt nghiệp lớp XNUMX Kênh()
HAProxy sử dụng hai bộ đệm để xử lý các yêu cầu. Cái đầu tiên được sử dụng
với dữ liệu yêu cầu (từ máy khách đến máy chủ) và dữ liệu thứ hai được sử dụng cho
dữ liệu phản hồi (từ máy chủ đến máy khách).

Mỗi bộ đệm chứa hai loại dữ liệu. Loại đầu tiên là dữ liệu đến đang chờ
để xử lý. Phần thứ hai là dữ liệu gửi đi đã được xử lý. Thường xuyên,
dữ liệu đến được xử lý, sau khi nó được gắn thẻ là dữ liệu gửi đi, và cuối cùng là
đã được gửi. Các hàm sau cung cấp các công cụ để thao tác với những dữ liệu này trong một
đệm.

Sơ đồ sau đây cho thấy vị trí áp dụng chức năng lớp kênh.

Cảnh báo: Không thể đọc từ phản hồi trong hành động yêu cầu và nó là
không thể đọc cho kênh yêu cầu trong hành động phản hồi.
[hình ảnh]

Channel.dup (kênh)
Hàm này trả về một chuỗi chứa toàn bộ bộ đệm. Dữ liệu không
loại bỏ khỏi bộ đệm và có thể được xử lý lại sau.

Nếu bộ đệm không thể nhận thêm dữ liệu, giá trị 'nil' được trả về.

Lập luận

· kênh (lớp_kênh) - Kênh bị thao túng.

Trả hàng
một chuỗi chứa tất cả dữ liệu có sẵn hoặc nil.

Channel.get (kênh)
Hàm này trả về một chuỗi chứa toàn bộ bộ đệm. Dữ liệu được tiêu thụ
từ bộ đệm.

Nếu bộ đệm không thể nhận thêm dữ liệu, giá trị 'nil' được trả về.

Lập luận

· kênh (lớp_kênh) - Kênh bị thao túng.

Trả hàng
một chuỗi chứa tất cả dữ liệu có sẵn hoặc nil.

Channel.getline (kênh)
Hàm này trả về một chuỗi có chứa dòng đầu tiên của bộ đệm. Dữ liệu
được tiêu thụ. Nếu dữ liệu trả về không chứa chữ 'n' cuối cùng, nó được giả định hơn
dữ liệu có sẵn cuối cùng trong bộ đệm.

Nếu bộ đệm không thể nhận thêm dữ liệu, giá trị 'nil' được trả về.

Lập luận

· kênh (lớp_kênh) - Kênh bị thao túng.

Trả hàng
một chuỗi chứa dòng có sẵn hoặc nil.

Channel.set (kênh, dây)
Hàm này thay thế nội dung của bộ đệm bằng chuỗi. Hàm trả về
chiều dài đã sao chép, nếu không, nó trả về -1.

Tập dữ liệu có chức năng này không được gửi. Họ chờ đợi sự kết thúc của HAProxy
đang xử lý, vì vậy bộ đệm có thể đầy.

Lập luận

· kênh (lớp_kênh) - Kênh bị thao túng.

· chuỗi (chuỗi) - Dữ liệu sẽ được gửi.

Trả hàng
một số nguyên chứa số lượng byte được sao chép hoặc -1.

Channel.append (kênh, dây)
Hàm này nối đối số chuỗi vào nội dung của bộ đệm. Chức năng
trả về độ dài đã sao chép, ngược lại, nó trả về -1.

Tập dữ liệu có chức năng này không được gửi. Họ chờ đợi sự kết thúc của HAProxy
đang xử lý, vì vậy bộ đệm có thể đầy.

Lập luận

· kênh (lớp_kênh) - Kênh bị thao túng.

· chuỗi (chuỗi) - Dữ liệu sẽ được gửi.

Trả hàng
một số nguyên chứa số lượng byte được sao chép hoặc -1.

Channel.send (kênh, dây)
Chức năng này yêu cầu gửi dữ liệu ngay lập tức. Trừ khi kết nối là
đóng, bộ đệm thường xuyên được xả và tất cả chuỗi có thể được gửi.

Lập luận

· kênh (lớp_kênh) - Kênh bị thao túng.

· chuỗi (chuỗi) - Dữ liệu sẽ được gửi.

Trả hàng
một số nguyên chứa số lượng byte được sao chép hoặc -1.

Channel.get_in_length (kênh)
Hàm này trả về độ dài của phần đầu vào của bộ đệm.

Lập luận

· kênh (lớp_kênh) - Kênh bị thao túng.

Trả hàng
một số nguyên chứa số lượng byte có sẵn.

Channel.get_out_length (kênh)
Hàm này trả về độ dài của phần đầu ra của bộ đệm.

Lập luận

· kênh (lớp_kênh) - Kênh bị thao túng.

Trả hàng
một số nguyên chứa số lượng byte có sẵn.

Channel.ward (kênh, NS)
Hàm này chuyển các byte từ phần đầu vào của bộ đệm sang phần đầu ra.

Lập luận

· kênh (lớp_kênh) - Kênh bị thao túng.

· int (số nguyên) - Số lượng dữ liệu sẽ được chuyển tiếp.

tốt nghiệp lớp XNUMX HTTP ()
Lớp này chứa tất cả các hàm thao tác HTTP.

HTTP.req_get_headers (http)
Trả về một mảng chứa tất cả các tiêu đề yêu cầu.

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

Trả hàng
mảng tiêu đề.

Xem HTTP.res_get_headers ()

Đây là dạng của mảng được trả về:

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

local hdr = HTTP: req_get_headers ()
hdr ["host"] [0] = "www.test.com"
hdr ["accept"] [0] = "audio / basic q = 1"
hdr ["accept"] [1] = "audio / *, q = 0.2"
hdr ["accept"] [2] = "* / *, q = 0.1"

HTTP.res_get_headers (http)
Trả về một mảng chứa tất cả các tiêu đề phản hồi.

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

Trả hàng
mảng tiêu đề.

Xem HTTP.req_get_headers ()

Đây là dạng của mảng được trả về:

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

local hdr = HTTP: req_get_headers ()
hdr ["host"] [0] = "www.test.com"
hdr ["accept"] [0] = "audio / basic q = 1"
hdr ["accept"] [1] = "audio / *, q = 0.2"
hdr ["accept"] [2] = "*. *, q = 0.1"

HTTP.req_add_header (http, Tên, giá trị)
Thêm trường tiêu đề HTTP trong yêu cầu có tên được chỉ định trong "name" và
có giá trị được xác định trong "giá trị".

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

· tên (chuỗi) - Tên tiêu đề.

· giá trị (chuỗi) - Giá trị tiêu đề.

Xem HTTP.res_add_header ()

HTTP.res_add_header (http, Tên, giá trị)
thêm trường tiêu đề HTTP trong phản hồi có tên được chỉ định trong "name" và
có giá trị được xác định trong "giá trị".

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

· tên (chuỗi) - Tên tiêu đề.

· giá trị (chuỗi) - Giá trị tiêu đề.

Xem HTTP.req_add_header ()

HTTP.req_del_header (http, Tên)
Loại bỏ tất cả các trường tiêu đề HTTP trong yêu cầu có tên được chỉ định trong "name".

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

· tên (chuỗi) - Tên tiêu đề.

Xem HTTP.res_del_header ()

HTTP.res_del_header (http, Tên)
Loại bỏ tất cả các trường tiêu đề HTTP trong phản hồi có tên được chỉ định trong "name".

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

· tên (chuỗi) - Tên tiêu đề.

Xem HTTP.req_del_header ()

HTTP.req_set_header (http, Tên, giá trị)
Biến này thay thế tất cả các lần xuất hiện của tất cả "tên" tiêu đề, chỉ bằng một biến có chứa
giá trị".

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

· tên (chuỗi) - Tên tiêu đề.

· giá trị (chuỗi) - Giá trị tiêu đề.

Xem HTTP.res_set_header ()

Hàm này hoạt động tương tự như mã folowwing:

hàm fcn (txn)
TXN.http: req_del_header ("tiêu đề")
TXN.http: req_add_header ("tiêu đề", "giá trị")
cuối

HTTP.res_set_header (http, Tên, giá trị)
Biến này thay thế tất cả các lần xuất hiện của tất cả "tên" tiêu đề, chỉ bằng một biến có chứa
giá trị".

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

· tên (chuỗi) - Tên tiêu đề.

· giá trị (chuỗi) - Giá trị tiêu đề.

Xem HTTP.req_rep_header ()

HTTP.req_rep_header (http, Tên, biểu thức chính quy, thay thế)
Đối sánh biểu thức chính quy trong tất cả các lần xuất hiện của trường tiêu đề "name" theo
thành "regex" và thay thế chúng bằng đối số "Replace". Giá trị thay thế
có thể chứa các tham chiếu ngược như 1, 2, ... Chức năng này hoạt động với yêu cầu.

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

· tên (chuỗi) - Tên tiêu đề.

· biểu thức chính quy (chuỗi) - Đối sánh biểu thức chính quy.

· thay thế (chuỗi) - Giá trị thay thế.

Xem HTTP.res_rep_header ()

HTTP.res_rep_header (http, Tên, biểu thức chính quy, dây)
Đối sánh biểu thức chính quy trong tất cả các lần xuất hiện của trường tiêu đề "name" theo
thành "regex" và thay thế chúng bằng đối số "Replace". Giá trị thay thế
có thể chứa các tham chiếu ngược như 1, 2, ... Chức năng này hoạt động với yêu cầu.

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

· tên (chuỗi) - Tên tiêu đề.

· biểu thức chính quy (chuỗi) - Đối sánh biểu thức chính quy.

· thay thế (chuỗi) - Giá trị thay thế.

Xem HTTP.req_replace_header ()

HTTP.req_replace_value (http, Tên, biểu thức chính quy, thay thế)
Hoạt động giống như "HTTP.req_replace_header ()" ngoại trừ việc nó khớp với regex với
mọi giá trị được phân tách bằng dấu phẩy của trường tiêu đề "name" thay vì toàn bộ
tiêu đề.

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

· tên (chuỗi) - Tên tiêu đề.

· biểu thức chính quy (chuỗi) - Đối sánh biểu thức chính quy.

· thay thế (chuỗi) - Giá trị thay thế.

Xem HTTP.req_replace_header ()

Xem HTTP.res_replace_value ()

HTTP.res_replace_value (http, Tên, biểu thức chính quy, thay thế)
Hoạt động giống như "HTTP.res_replace_header ()" ngoại trừ việc nó khớp với regex với
mọi giá trị được phân tách bằng dấu phẩy của trường tiêu đề "name" thay vì toàn bộ
tiêu đề.

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

· tên (chuỗi) - Tên tiêu đề.

· biểu thức chính quy (chuỗi) - Đối sánh biểu thức chính quy.

· thay thế (chuỗi) - Giá trị thay thế.

Xem HTTP.res_replace_header ()

Xem HTTP.req_replace_value ()

HTTP.req_set_method (http, phương pháp)
Viết lại phương thức yêu cầu với tham số "method".

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

· phương pháp (chuỗi) - Phương pháp mới.

HTTP.req_set_path (http, đường dẫn)
Viết lại đường dẫn yêu cầu với tham số "đường dẫn".

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

· con đường (chuỗi) - Con đường mới.

HTTP.req_set_query (http, truy vấn)
Viết lại chuỗi truy vấn của yêu cầu xuất hiện sau dấu chấm hỏi đầu tiên
("?") với tham số "truy vấn".

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

· truy vấn (chuỗi) - Truy vấn mới.

HTTP.req_set_uri (http, đi tiểu)
Viết lại URI yêu cầu với tham số "uri".

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

· s (chuỗi) - Đi tiểu mới.

HTTP.res_set_status (http, trạng thái)
Viết lại mã trạng thái phản hồi với tham số "mã". Lưu ý rằng lý do
được tự động điều chỉnh cho phù hợp với mã mới.

Lập luận

· http (lớp_http) - Đối tượng http liên quan.

· tình trạng (số nguyên) - Mã trạng thái phản hồi mới.

tốt nghiệp lớp XNUMX TXN ()
Lớp txn chứa tất cả các chức năng liên quan đến giao dịch http hoặc tcp
(Lưu ý rằng luồng tcp giống với giao dịch tcp nhưng là giao dịch HTTP
không giống với luồng tcp).

Việc sử dụng lớp này cho phép truy xuất dữ liệu từ các yêu cầu, thay đổi nó và
chuyển tiếp nó.

Tất cả các chức năng được cung cấp bởi lớp này đều có sẵn trong ngữ cảnh
lấy mẫuhành động.

TXN.c

Trả hàng
An Converters tốt nghiệp lớp XNUMX.

Thuộc tính này chứa một đối tượng lớp Converters.

TXN.sc

Trả hàng
An Converters tốt nghiệp lớp XNUMX.

Thuộc tính này chứa một đối tượng lớp Converters. Các chức năng của đối tượng này
trả về luôn là một chuỗi.

TXN.f

Trả hàng
An Tìm nạp tốt nghiệp lớp XNUMX.

Thuộc tính này chứa một đối tượng lớp Fetches.

TXN.sf

Trả hàng
An Tìm nạp tốt nghiệp lớp XNUMX.

Thuộc tính này chứa một đối tượng lớp Fetches. Các chức năng của đối tượng này
trả về luôn là một chuỗi.

TXN.req

Trả hàng
An Kênh tốt nghiệp lớp XNUMX.

Thuộc tính này chứa một đối tượng lớp kênh cho bộ đệm yêu cầu.

TXN.res

Trả hàng
An Kênh tốt nghiệp lớp XNUMX.

Thuộc tính này chứa một đối tượng lớp kênh cho bộ đệm phản hồi.

TXN.http

Trả hàng
An HTTP tốt nghiệp lớp XNUMX.

Thuộc tính này chứa một đối tượng lớp HTTP. Nó chỉ có thể sử dụng được nếu proxy có
"chế độ http" được bật.

TXN.log (TXN, mức đăng nhập, tin nhắn)
Chức năng này gửi một bản ghi. Nhật ký được gửi, theo HAProxy
tệp cấu hình, trên máy chủ nhật ký hệ thống mặc định nếu nó được định cấu hình và trên
stderr nếu nó được cho phép.

Lập luận

· txn (lớp_txn) - Đối tượng txn của lớp chứa dữ liệu.

· mức độ đăng nhập (số nguyên) - Là mức nhật ký được liên kết với thông báo. Nó là một
số từ 0 đến 7.

· msg (chuỗi) - Nội dung nhật ký.

Xem core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (định nghĩa mức nhật ký)

Xem TXN.deflog

Xem TXN.Debug

Xem TXN.Thông tin

Xem TXN.Cảnh báo

Xem TXN.Cảnh báo

TXN.deflog (TXN, tin nhắn)
Gửi một dòng nhật ký với cấp độ nhật ký mặc định cho proxy được liên kết với
Giao dịch.

Lập luận

· txn (lớp_txn) - Đối tượng txn của lớp chứa dữ liệu.

· msg (chuỗi) - Nội dung nhật ký.

Xem TXN.log

TXN.Debug (txn, tin nhắn)

Lập luận

· txn (lớp_txn) - Đối tượng txn của lớp chứa dữ liệu.

· msg (chuỗi) - Nội dung nhật ký.

Xem TXN.log

Thực hiện công việc tương tự hơn:

function Debug (txn, msg)
TXN.log (txn, core.debug, msg)
cuối

TXN.Info (txn, tin nhắn)

Lập luận

· txn (lớp_txn) - Đối tượng txn của lớp chứa dữ liệu.

· msg (chuỗi) - Nội dung nhật ký.

Xem TXN.log

function Debug (txn, msg)
TXN.log (txn, core.info, msg)
cuối

TXN.Warning (txn, tin nhắn)

Lập luận

· txn (lớp_txn) - Đối tượng txn của lớp chứa dữ liệu.

· msg (chuỗi) - Nội dung nhật ký.

Xem TXN.log

function Debug (txn, msg)
TXN.log (txn, core.warning, msg)
cuối

TXN.Alert (txn, tin nhắn)

Lập luận

· txn (lớp_txn) - Đối tượng txn của lớp chứa dữ liệu.

· msg (chuỗi) - Nội dung nhật ký.

Xem TXN.log

function Debug (txn, msg)
TXN.log (txn, core.alert, msg)
cuối

TXN.get_priv (txn)
Trả lại dữ liệu Lua được lưu trữ trong giao dịch hiện tại (với TXN.set_priv ())
chức năng. Nếu không có dữ liệu nào được lưu trữ, nó trả về giá trị nil.

Lập luận

· txn (lớp_txn) - Đối tượng txn của lớp chứa dữ liệu.

Trả hàng
dữ liệu không rõ ràng được lưu trữ trước hoặc bằng không nếu không có gì có thể sử dụng được.

TXN.set_priv (txn, dữ liệu)
Lưu trữ bất kỳ dữ liệu nào trong giao dịch HAProxy hiện tại. Hành động này thay thế hành động cũ
dữ liệu được lưu trữ.

Lập luận

· txn (lớp_txn) - Đối tượng txn của lớp chứa dữ liệu.

· dữ liệu (đục) - Dữ liệu được lưu trữ trong giao dịch.

TXN.set_var (TXN, có, giá trị)
Chuyển đổi kiểu Lua thành kiểu HAProxy và lưu trữ nó trong một biến .

Lập luận

· txn (lớp_txn) - Đối tượng txn của lớp chứa dữ liệu.

· (chuỗi) - Tên biến theo biến HAProxy
cú pháp.

· giá trị (đục) - Dữ liệu được lưu trữ trong biến.

TXN.get_var (TXN, v.v.)
Trả về dữ liệu được lưu trữ trong bộ biến đổi ở kiểu Lua.

Lập luận

· txn (lớp_txn) - Đối tượng txn của lớp chứa dữ liệu.

· (chuỗi) - Tên biến theo biến HAProxy
cú pháp.

TXN.get_headers (txn)
Hàm này trả về một mảng tiêu đề.

Lập luận

· txn (lớp_txn) - Đối tượng txn của lớp chứa dữ liệu.

Trả hàng
một mảng các tiêu đề.

TXN.done (txn)
Hàm này kết thúc quá trình xử lý giao dịch và phiên liên quan.
Nó có thể được sử dụng khi một lỗi nghiêm trọng được phát hiện hoặc để kết thúc quá trình xử lý sau
một số dữ liệu đã được trả lại cho máy khách (ví dụ: chuyển hướng).

Lập luận

· txn (lớp_txn) - Đối tượng txn của lớp chứa dữ liệu.

TXN.set_loglevel (txn, mức đăng nhập)
Được sử dụng để thay đổi cấp độ nhật ký của yêu cầu hiện tại. "Loglevel" phải là một
số nguyên từ 0 đến 7.

Lập luận

· txn (lớp_txn) - Đối tượng txn của lớp chứa dữ liệu.

· mức độ đăng nhập (số nguyên) - Mức độ nhật ký cần thiết. Biến này có thể là một trong số

Xem cốt lõi.

TXN.set_tos (txn, tos)
Được sử dụng để đặt giá trị trường TOS hoặc DSCP của các gói được gửi đến máy khách để
giá trị được chuyển trong "tos" trên các nền tảng hỗ trợ điều này.

Lập luận

· txn (lớp_txn) - Đối tượng txn của lớp chứa dữ liệu.

· trẻ con (số nguyên) - TOS os DSCP mới.

TXN.set_mark (txn, dấu)
Được sử dụng để đặt Netfilter MARK trên tất cả các gói được gửi đến máy khách thành giá trị
được chuyển vào "mark" trên các nền tảng hỗ trợ nó.

Lập luận

· txn (lớp_txn) - Đối tượng txn của lớp chứa dữ liệu.

· dấu (số nguyên) - Giá trị nhãn hiệu.

tốt nghiệp lớp XNUMX Ổ cắm()
Lớp này phải tương thích với lớp Lua Socket. Chỉ 'khách hàng'
các chức năng có sẵn. Xem tài liệu Lua Socket:

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

Socket.close (ổ cắm)
Đóng một đối tượng TCP. Ổ cắm bên trong được sử dụng bởi đối tượng được đóng và cục bộ
địa chỉ mà đối tượng bị ràng buộc được cung cấp cho các ứng dụng khác. Không
các hoạt động khác (ngoại trừ các lệnh gọi tiếp theo đến phương thức đóng) được cho phép trên một
đã đóng Socket.

Lập luận

· ổ cắm (lớp_socket) - Là Socket thao tác.

Lưu ý: Điều quan trọng là phải đóng tất cả các ổ cắm đã sử dụng khi chúng không cần thiết, vì, trong
nhiều hệ thống, mỗi ổ cắm sử dụng một bộ mô tả tệp, đó là hệ thống hạn chế
tài nguyên. Các đối tượng thu gom rác sẽ tự động đóng lại trước khi tiêu hủy,
Tuy nhiên.

Socket.connect (ổ cắm, địa chỉ[, Hải cảng])
Cố gắng kết nối một đối tượng socket với một máy chủ từ xa.

Trong trường hợp có lỗi, phương thức trả về nil theo sau là một chuỗi mô tả lỗi.
Trong trường hợp thành công, phương thức trả về 1.

Lập luận

· ổ cắm (lớp_socket) - Là Socket thao tác.

· địa chỉ (chuỗi) - có thể là địa chỉ IP hoặc tên máy chủ. Xem bên dưới cho
thêm thông tin.

· cổng (số nguyên) - phải là một số nguyên trong phạm vi [1..64K].

Trả hàng
1 hoặc nil.

phần mở rộng trường địa chỉ cho phép sử dụng hàm connect () để kết nối với
luồng khác ngoài TCP. Cú pháp chứa địa chỉ simpleipv4 hoặc ipv6 là
về cơ bản định dạng dự kiến. Định dạng này yêu cầu cổng.

Định dạng khác được chấp nhận là một đường dẫn ổ cắm như "/ socket / path", nó cho phép kết nối
đến một ổ cắm. không gian tên trừu tượng được hỗ trợ với tiền tố "abns @" và finaly
có thể chuyển tội phạm đã nộp với tiền tố "fd @". Tiền tố "ipv4 @", "ipv6 @"
và "unix @" cũng được hỗ trợ. Cổng có thể được chuyển vào chuỗi. Cú pháp
"127.0.0.1:1234" là hợp lệ. trong trường hợp này, tham số cổng bị bỏ qua.

Socket.connect_ssl (ổ cắm, Địa chỉ, cổng)
Hoạt động tương tự so với chức năng socket: kết nối, nhưng sử dụng SSL.

Lập luận

· ổ cắm (lớp_socket) - Là Socket thao tác.

Trả hàng
1 hoặc nil.

Socket.getpeername (ổ cắm)
Trả về thông tin về phía từ xa của một đối tượng khách hàng được kết nối.

Trả về một chuỗi có địa chỉ IP của máy ngang hàng, theo sau là số cổng
ngang hàng đang sử dụng cho kết nối. Trong trường hợp có lỗi, phương thức trả về nil.

Lập luận

· ổ cắm (lớp_socket) - Là Socket thao tác.

Trả hàng
một chuỗi chứa thông tin máy chủ.

Socket.getsockname (ổ cắm)
Trả về thông tin địa chỉ cục bộ được liên kết với đối tượng.

Phương thức trả về một chuỗi có địa chỉ IP cục bộ và một số có cổng. Trong
trường hợp lỗi, phương thức trả về nil.

Lập luận

· ổ cắm (lớp_socket) - Là Socket thao tác.

Trả hàng
một chuỗi chứa thông tin khách hàng.

Socket.receive (socket [, mẫu[, tiếp đầu ngữ]])
Đọc dữ liệu từ một đối tượng khách hàng, theo mẫu đọc được chỉ định. Hoa văn
tuân theo định dạng I / O tệp Lua và sự khác biệt về hiệu suất giữa tất cả
các mẫu không đáng kể.

Lập luận

· ổ cắm (lớp_socket) - Là Socket thao tác.

· Belt Hold (chuỗi | số nguyên) - Mô tả những gì được yêu cầu (xem bên dưới).

· tiếp đầu ngữ (chuỗi) - Một chuỗi sẽ là tiền tố cho dữ liệu trả về.

Trả hàng
một chuỗi chứa dữ liệu bắt buộc hoặc nil.

Mẫu có thể là bất kỳ mẫu nào sau đây:

·

`* a`: đọc từ các ổ cắm cho đến khi các liên quan is khép kín. Không
dịch cuối dòng được thực hiện;

·

`* l`: đọc a hàng of văn bản từ các Ổ cắm. Sản phẩm hàng is chấm dứt by a
Ký tự LF (ASCII 10), tùy chọn trước ký tự CR (ASCII 13).
Các ký tự CR và LF không được bao gồm trong dòng trả về. Trên thực tế,
tất cả các ký tự CR bị bỏ qua bởi mẫu. Đây là mẫu mặc định.

·

con số: nguyên nhân các phương pháp đến đọc a quy định con số of byte từ các
Ổ cắm. Tiền tố là một chuỗi tùy chọn được nối với phần đầu
của bất kỳ dữ liệu nhận được trước khi trả lại.

· trống: Nếu mẫu để trống, tùy chọn mặc định là *l.

Nếu thành công, phương thức trả về mẫu đã nhận. Trong trường hợp có lỗi,
phương thức trả về nil theo sau là một thông báo lỗi có thể là chuỗi 'đóng' trong
trường hợp kết nối bị đóng trước khi quá trình truyền hoàn tất hoặc chuỗi
'timeout' trong trường hợp có thời gian chờ trong quá trình hoạt động. Ngoài ra, sau khi lỗi
thông báo, hàm trả về kết quả từng phần của quá trình truyền.

Lưu ý quan trọng: Chức năng này đã bị thay đổi nghiêm trọng. Nó được sử dụng để hỗ trợ nhiều
(nhưng tôi chưa bao giờ thấy tính năng này được sử dụng) và bây giờ nó không còn nữa.
Kết quả từng phần được trả về giống như kết quả thành công. Điều này
tính năng cuối cùng đã vi phạm ý tưởng rằng tất cả các hàm phải trả về nil khi bị lỗi. Như vậy
nó cũng đã được thay đổi.

Socket.send (ổ cắm, dữ liệu[, khởi đầu[, chấm dứt]])
Gửi dữ liệu thông qua đối tượng khách hàng.

Lập luận

· ổ cắm (lớp_socket) - Là Socket thao tác.

· dữ liệu (chuỗi) - Dữ liệu sẽ được gửi.

· Bắt đầu (số nguyên) - Vị trí bắt đầu trong bộ đệm dữ liệu sẽ
được gửi.

· cuối (số nguyên) - Vị trí kết thúc trong bộ đệm dữ liệu sẽ là
gởi.

Trả hàng
xem bên dưới.

Dữ liệu là chuỗi được gửi. Các đối số tùy chọn i và j hoạt động chính xác như
hàm standard string.sub Lua để cho phép lựa chọn một chuỗi con được gửi đi.

Nếu thành công, phương thức trả về chỉ mục của byte cuối cùng trong [bắt đầu, kết thúc]
đã được gửi đi. Lưu ý rằng, nếu bắt đầu là 1 hoặc vắng mặt, thì đây thực sự là
tổng số byte được gửi. Trong trường hợp lỗi, phương thức trả về nil, theo sau là
một thông báo lỗi, theo sau là chỉ mục của byte cuối cùng trong [bắt đầu, kết thúc]
đã được gửi đi. Bạn có thể muốn thử lại từ byte sau đó. Lỗi
tin nhắn có thể được 'đóng' trong trường hợp kết nối bị đóng trước khi truyền
đã được hoàn thành hoặc chuỗi 'hết thời gian chờ' trong trường hợp có thời gian chờ trong
hoạt động.

Lưu ý: Đầu ra không được lưu vào bộ đệm. Đối với các chuỗi nhỏ, tốt hơn là nên nối
chúng trong Lua (với toán tử '..') và gửi kết quả trong một cuộc gọi thay vì
gọi phương thức nhiều lần.

Socket.setoption (ổ cắm, lựa chọn[, giá trị])
Chỉ được triển khai để tương thích, cal này không làm gì cả.

Socket.settimeout (socket, giá trị[, chế độ])
Thay đổi giá trị thời gian chờ cho đối tượng. Tất cả các hoạt động I / O đang bị chặn. Điều đó
là, bất kỳ lệnh gọi nào đến các phương thức gửi, nhận và chấp nhận sẽ chặn vô thời hạn,
cho đến khi hoạt động hoàn tất. Phương thức settimeout xác định giới hạn về số lượng
về thời gian mà các phương thức I / O có thể chặn. Khi hết thời gian chờ, người bị ảnh hưởng
các phương pháp từ bỏ và không thành công với một mã lỗi.

Khoảng thời gian chờ được chỉ định dưới dạng tham số giá trị, tính bằng giây.

Các chế độ thời gian chờ được thực hiện bởi bot, thời gian chờ duy nhất có thể thiết lập là không hoạt động
thời gian chờ đợi hoàn thành gửi bộ đệm nội bộ hoặc chờ nhận dữ liệu.

Lập luận

· ổ cắm (lớp_socket) - Là Socket thao tác.

· giá trị (số nguyên) - Giá trị thời gian chờ.

tốt nghiệp lớp XNUMX Bản đồ()
Lớp này cho phép thực hiện một số tra cứu trong bản đồ HAProxy. Các bản đồ được khai báo có thể được
được sửa đổi trong thời gian chạy thông qua ổ cắm quản lý HAProxy.

default = "usa"

- Tạo và tải bản đồ
geo = Map.new ("geo.map", Map.ip);

- Tạo tìm nạp mới trả về quốc gia của người dùng
core.register_fetches ("country", function (txn)
src địa phương;
địa phương;

src = txn.f: fhdr ("x-forwarded-for");
if (src == nil) thì
src = txn.f: src ()
if (src == nil) thì
trả về mặc định;
cuối
cuối

- Thực hiện tra cứu
loc = geo: tra cứu (src);

nếu (loc == nil) thì
trả về mặc định;
cuối

trả về loc;
chấm dứt);

Bản đồ.int
Xem tệp HAProxy configuration.txt, chương "Sử dụng ACL và tìm nạp mẫu"
ans subchapter "ACL basics" để hiểu phương pháp đối sánh mẫu này.

Bản đồ.ip Xem tệp HAProxy configuration.txt, chương "Sử dụng ACL và tìm nạp mẫu"
ans subchapter "ACL basics" để hiểu phương pháp đối sánh mẫu này.

Bản đồ.str
Xem tệp HAProxy configuration.txt, chương "Sử dụng ACL và tìm nạp mẫu"
ans subchapter "ACL basics" để hiểu phương pháp đối sánh mẫu này.

Bản đồ.beg
Xem tệp HAProxy configuration.txt, chương "Sử dụng ACL và tìm nạp mẫu"
ans subchapter "ACL basics" để hiểu phương pháp đối sánh mẫu này.

Bản đồ.sub
Xem tệp HAProxy configuration.txt, chương "Sử dụng ACL và tìm nạp mẫu"
ans subchapter "ACL basics" để hiểu phương pháp đối sánh mẫu này.

Bản đồ.dir
Xem tệp HAProxy configuration.txt, chương "Sử dụng ACL và tìm nạp mẫu"
ans subchapter "ACL basics" để hiểu phương pháp đối sánh mẫu này.

Bản đồ.dom
Xem tệp HAProxy configuration.txt, chương "Sử dụng ACL và tìm nạp mẫu"
ans subchapter "ACL basics" để hiểu phương pháp đối sánh mẫu này.

Bản đồ.end
Xem tệp HAProxy configuration.txt, chương "Sử dụng ACL và tìm nạp mẫu"
ans subchapter "ACL basics" để hiểu phương pháp đối sánh mẫu này.

Bản đồ.reg
Xem tệp HAProxy configuration.txt, chương "Sử dụng ACL và tìm nạp mẫu"
ans subchapter "ACL basics" để hiểu phương pháp đối sánh mẫu này.

Map.new (tệp, phương pháp)
Tạo và tải bản đồ.

Lập luận

· hồ sơ (chuỗi) - Là tệp chứa bản đồ.

· phương pháp (số nguyên) - Là phương pháp đối sánh mẫu bản đồ. Xem các thuộc tính
của lớp Bản đồ.

Trả hàng
một đối tượng Bản đồ lớp.

Xem Các thuộc tính Bản đồ.

Map.lookup (bản đồ, str)
Thực hiện tra cứu trong bản đồ.

Lập luận

· bản đồ (bản đồ lớp) - Là đối tượng Map của lớp.

· str (chuỗi) - Là chuỗi được sử dụng làm khóa.

Trả hàng
một chuỗi chứa kết quả hoặc nil nếu không có kết quả phù hợp.

Map.slookup (bản đồ, str)
Thực hiện tra cứu trong bản đồ.

Lập luận

· bản đồ (bản đồ lớp) - Là đối tượng Map của lớp.

· str (chuỗi) - Là chuỗi được sử dụng làm khóa.

Trả hàng
một chuỗi chứa kết quả hoặc chuỗi trống nếu không có kết quả phù hợp.

tốt nghiệp lớp XNUMX AppletHTTP ()
Lớp này được sử dụng với các applet yêu cầu chế độ 'http'. Ứng dụng http có thể
được đăng ký với core.register_service () chức năng. Chúng được sử dụng cho
xử lý một yêu cầu http như một máy chủ ở phía sau HAProxy.

Đây là mã mẫu hello world:

core.register_service ("hello-world", "http", function (applet)
local response = "Xin chào Thế giới!"
tiểu dụng:set_status(200)
applet: add_header ("content-length", string.len (response))
applet: add_header ("loại nội dung", "văn bản / đơn giản")
applet: start_response ()
applet: gửi (phản hồi)
kết thúc)

AppletHTTP.c

Trả hàng
A Converters tốt nghiệp lớp XNUMX

Thuộc tính này chứa một đối tượng lớp Converters.

AppletHTTP.sc

Trả hàng
A Converters tốt nghiệp lớp XNUMX

Thuộc tính này chứa một đối tượng lớp Converters. Các chức năng của đối tượng này
trả về luôn là một chuỗi.

AppletHTTP.f

Trả hàng
A Tìm nạp tốt nghiệp lớp XNUMX

Thuộc tính này chứa một đối tượng lớp Fetches. Lưu ý rằng việc thực thi applet
địa điểm không thể truy cập vào giao dịch HTTP lõi HAProxy hợp lệ, vì vậy một số mẫu
Các fecthes liên quan đến các giá trị phụ thuộc HTTP (hdr, đường dẫn, ...) không có sẵn.

AppletHTTP.sf

Trả hàng
A Tìm nạp tốt nghiệp lớp XNUMX

Thuộc tính này chứa một đối tượng lớp Fetches. Các chức năng của đối tượng này
trả về luôn là một chuỗi. Lưu ý rằng nơi thực thi applet không thể truy cập vào
giao dịch HTTP lõi HAProxy hợp lệ, vì vậy một số mẫu liên quan đến HTTP
các giá trị phụ thuộc (hdr, đường dẫn, ...) không có sẵn.

AppletHTTP.method

Trả hàng
chuỗi

Phương thức thuộc tính trả về một chuỗi chứa phương thức HTTP.

AppletHTTP.version

Trả hàng
chuỗi

Phiên bản thuộc tính, trả về một chuỗi chứa phiên bản yêu cầu HTTP.

AppletHTTP.path

Trả hàng
chuỗi

Đường dẫn thuộc tính trả về một chuỗi chứa đường dẫn yêu cầu HTTP.

AppletHTTP.qs

Trả hàng
chuỗi

Thuộc tính qs trả về một chuỗi chứa chuỗi truy vấn yêu cầu HTTP.

AppletHTTP.length

Trả hàng
số nguyên

Độ dài thuộc tính trả về một số nguyên chứa độ dài nội dung HTTP.

AppletHTTP.headers

Trả hàng
mảng

Các tiêu đề thuộc tính trả về một mảng chứa các tiêu đề HTTP. Tiêu đề
tên luôn được viết thường. Vì tên tiêu đề có thể gặp nhiều hơn
một lần trong mỗi yêu cầu, giá trị được lập chỉ mục với 0 là giá trị chỉ mục đầu tiên. Mảng
có biểu mẫu này:

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

AppletHTTP.headers ["host"] [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"

AppletHTTP.headers
Chứa một mảng chứa tất cả các tiêu đề yêu cầu.

AppletHTTP.set_status (applet, mã)
Hàm này đặt mã trạng thái HTTP cho phản hồi. Mã được phép là từ
100 đến 599.

Lập luận

· applet (lớp_AppletHTTP) -- Một AppletHTTP tốt nghiệp lớp XNUMX

· (số nguyên) - mã trạng thái được trả lại cho máy khách.

AppletHTTP.add_header (applet, Tên, giá trị)
Hàm này thêm một tiêu đề trong phản hồi. Các tiêu đề trùng lặp không được thu gọn.
Tiêu đề đặc biệt Thời lượng nội dung được sử dụng để xác định độ dài phản hồi. Nếu nó
không tồn tại, một chuyển-mã hóa: phân khúc được thiết lập và tất cả các chữ viết từ funcion
AppletHTTP: send () trở thành một đoạn.

Lập luận

· applet (lớp_AppletHTTP) -- Một AppletHTTP tốt nghiệp lớp XNUMX

· tên (chuỗi) - tên tiêu đề

· giá trị (chuỗi) - giá trị tiêu đề

AppletHTTP.start_response (applet)
Chức năng này cho biết công cụ HTTP rằng nó có thể xử lý và gửi
tiêu đề phản hồi. Sau khi điều này được gọi, chúng tôi không thể thêm tiêu đề vào phản hồi; chúng tôi
không thể sử dụng AppletHTTP: send () chức năng nếu AppletHTTP: start_response () không phải là
gọi là.

Lập luận

· applet (lớp_AppletHTTP) -- Một AppletHTTP tốt nghiệp lớp XNUMX

AppletHTTP.getline (applet)
Hàm này trả về một chuỗi chứa một dòng từ phần thân http. Nếu dữ liệu
trả về không chứa '\ n' cuối cùng được giả định hơn là dữ liệu có sẵn cuối cùng
trước khi kết thúc luồng.

Lập luận

· applet (lớp_AppletHTTP) -- Một AppletHTTP tốt nghiệp lớp XNUMX

Trả hàng
một chuỗi. Chuỗi có thể trống nếu chúng ta đến cuối luồng.

AppletHTTP.receive (applet [, kích cỡ])
Đọc dữ liệu từ phần thân HTTP, theo cách đọc được chỉ định kích thước. Nếu kích thước is
thiếu, hàm cố gắng đọc tất cả nội dung của luồng cho đến khi kết thúc. Nếu như
các kích thước lớn hơn phần thân http, nó trả về lượng dữ liệu có thể xác định được.

Lập luận

· applet (lớp_AppletHTTP) -- Một AppletHTTP tốt nghiệp lớp XNUMX

· kích thước (số nguyên) - kích thước đọc yêu cầu.

Trả hàng
luôn trả về một chuỗi, chuỗi có thể trống là kết nối đã đóng.

AppletHTTP.send (applet, tin nhắn)
Gửi tin nhắn msg trên cơ thể yêu cầu http.

Lập luận

· applet (lớp_AppletHTTP) -- Một AppletHTTP tốt nghiệp lớp XNUMX

· msg (chuỗi) - thông điệp cần gửi.

tốt nghiệp lớp XNUMX AppletTCP ()
Lớp này được sử dụng với các applet yêu cầu chế độ 'tcp'. Applet tcp có thể
đăng ký với core.register_service () chức năng. Chúng được sử dụng để xử lý
một luồng tcp giống như một máy chủ hỗ trợ HAProxy.

AppletTCP.c

Trả hàng
A Converters tốt nghiệp lớp XNUMX

Thuộc tính này chứa một đối tượng lớp Converters.

AppletTCP.sc

Trả hàng
A Converters tốt nghiệp lớp XNUMX

Thuộc tính này chứa một đối tượng lớp Converters. Các chức năng của đối tượng này
trả về luôn là một chuỗi.

AppletTCP.f

Trả hàng
A Tìm nạp tốt nghiệp lớp XNUMX

Thuộc tính này chứa một đối tượng lớp Fetches.

AppletTCP.sf

Trả hàng
A Tìm nạp tốt nghiệp lớp XNUMX

Thuộc tính này chứa một đối tượng lớp Fetches.

AppletTCP.getline (applet)
Hàm này trả về một chuỗi chứa một dòng từ luồng. Nếu dữ liệu
trả về không chứa '\ n' cuối cùng được giả định hơn là dữ liệu có sẵn cuối cùng
trước khi kết thúc luồng.

Lập luận

· applet (lớp_AppletTCP) -- Một AppletTCP tốt nghiệp lớp XNUMX

Trả hàng
một chuỗi. Chuỗi có thể trống nếu chúng ta đến cuối luồng.

AppletTCP.receive (applet [, kích cỡ])
Đọc dữ liệu từ luồng TCP, theo cách đọc được chỉ định kích thước. Nếu kích thước
bị thiếu, hàm sẽ cố gắng đọc tất cả nội dung của luồng cho đến khi kết thúc.

Lập luận

· applet (lớp_AppletTCP) -- Một AppletTCP tốt nghiệp lớp XNUMX

· kích thước (số nguyên) - kích thước đọc yêu cầu.

Trả hàng
luôn trả về một chuỗi, chuỗi có thể trống là kết nối đã đóng.

AppletTCP.send (appletmsg)
Gửi tin nhắn trên luồng.

Lập luận

· applet (lớp_AppletTCP) -- Một AppletTCP tốt nghiệp lớp XNUMX

· msg (chuỗi) - thông điệp cần gửi.

Bạn có thể tìm thấy rất nhiều thư viện lua hữu ích tại đây:

· https://lua-toolbox.com/

Redis gia nhập:

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

Đây là một ví dụ về việc sử dụng thư viện Redis với HAProxy. Lưu ý rằng mỗi cuộc gọi
của bất kỳ chức năng nào của thư viện này có thể gây ra lỗi nếu kết nối ổ cắm không thành công.

- tải thư viện redis
cục bộ redis = request ("redis");

function do_something (txn)

- tạo và kết nối ổ cắm tcp mới
cục bộ tcp = core.tcp ();
tcp:thời gian chờ(1);
tcp: connect ("127.0.0.1", 6379);

- sử dụng thư viện redis với ổ cắm mới này
máy khách cục bộ = redis.connect ({socket = tcp});
máy khách: ping ();

cuối

OpenSSL:

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

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

Sử dụng haproxy-lua trực tuyến bằng các dịch vụ onworks.net


Máy chủ & Máy trạm miễn phí

Tải xuống ứng dụng Windows & Linux

Lệnh Linux

  • 1
    aarch64-linux-gnu-gnatlink
    aarch64-linux-gnu-gnatlink
    con muỗi, con muỗi, con muỗi, con muỗi,
    gnatfind, gnathtml, gnatkr, gnatlink,
    gnatls, gnatmake, gnatprep, gnatpsta,
    gnatpsys, gnatxref - hộp công cụ GNAT
    MÔ TẢ: Th...
    Chạy aarch64-linux-gnu-gnatlink
  • 2
    aarch64-linux-gnu-gnatls-5
    aarch64-linux-gnu-gnatls-5
    con muỗi, con muỗi, con muỗi, con muỗi,
    gnatfind, gnathtml, gnatkr, gnatlink,
    gnatls, gnatmake, gnatprep, gnatpsta,
    gnatpsys, gnatxref - hộp công cụ GNAT
    MÔ TẢ: Th...
    Chạy aarch64-linux-gnu-gnatls-5
  • 3
    cpan-lỗi thờip
    cpan-lỗi thờip
    cpan-outdated - phát hiện CPAN lỗi thời
    mô-đun trong môi trường của bạn ...
    Chạy cpan-outdatedp
  • 4
    cpan-tải lênp
    cpan-tải lênp
    cpan-upload - tải bản phân phối lên
    PHIÊN BẢN CPAN: phiên bản 0.103012
    SỬ DỤNG: cách sử dụng: cpan-upload [tùy chọn]
    tập tin để tải lên-1 [ tập tin để tải lên-2.. ]
    -v --động từ...
    Chạy cpan-uploadp
  • 5
    fzsftp
    fzsftp
    fzsftp - trình xử lý kết nối SFTP của
    MÔ TẢ FileZilla: fzsftp là một phần của
    FileZilla. Nó được sử dụng để xử lý SFTP
    (Giao thức truyền tệp SSH)
    kết nối. Nó ...
    Chạy fzsftp
  • 6
    g++-4.7
    g++-4.7
    gcc - Trình biên dịch C và C++ của dự án GNU ...
    Chạy g++-4.7
  • Khác »

Ad