영어프랑스어스페인어

Ad


온웍스 파비콘

haproxy-lua - 클라우드의 온라인

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터를 통해 OnWorks 무료 호스팅 제공업체에서 haproxy-lua 실행

이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 명령 haproxy-lua입니다.

프로그램:

이름


haproxy-lua - haproxy-lua 문서

하프록시 LUA 달리는 컨텍스트


HAProxy에서 실행되는 Lua 코드는 크게 2가지 모드로 처리할 수 있습니다. 첫 번째는
초기화 모드, 그리고 두 번째는 런타임 모드.

· 에서 초기화 모드, DNS 해결은 수행할 수 있지만 소켓 I/O는 수행할 수 없습니다.
이 초기화 모드에서 HAProxy는 Lua를 실행하는 동안 여전히 차단됩니다.
프로그램)

· 에서 런타임 모드, 우리는 DNS 해결을 수행할 수 없지만 소켓을 사용할 수 있습니다. 그만큼
Lua 코드의 실행은 요청 처리와 함께 다중화되므로 Lua 코드
차단으로 실행되는 것 같지만 그렇지 않습니다.

Lua 코드는 하나 이상의 파일에 로드됩니다. 이 파일에는 주요 코드와 기능이 포함되어 있습니다.
Lua에는 6개의 실행 컨텍스트가 있습니다.

1. 루아 파일 문맥. 그것은 Lua 파일을 로드하는 동안 실행됩니다.
HAProxy [글로벌] 지시문이 있는 섹션 루아로드. 초기화에서 실행된다
방법. 이 섹션은 HAProxy에서 Lua 바인딩을 구성하는 데 사용됩니다.

2. 루아 INIT 문맥. HAProxy 직후에 실행되는 Lua 함수입니다.
구성 파싱. 실행이 초기화 모드에 있습니다. 이러한 맥락에서
HAProxy 환경이 이미 초기화되었습니다. 구성을 확인하는 것이 유용하거나
소켓 연결 또는 작업 초기화. 이러한 함수는 본문에서 선언됩니다.
Lua 함수와 컨텍스트 core.register_init(). 함수의 프로토타입은
다음과 같이 반환 값과 매개변수가 없는 간단한 함수: 기능 fcn().

3. 루아 태스크 문맥. HAProxy 시작 후 실행되는 Lua 함수입니다.
스케줄러, Lua 함수로 작업 선언 직후
core.register_task(). 이 컨텍스트는 트래픽 처리와 동시에 발생할 수 있습니다. 그것은
런타임 모드에서 실행됩니다. 함수의 프로토타입은 다음이 없는 간단한 함수입니다.
다음과 같이 매개변수 없이 반환 값: 기능 fcn().

4. 그만큼 동작 문맥. 조건부로 실행되는 Lua 함수입니다. 이러한 조치는
Lua 지시문에 의해 등록됨 "core.register_action()". Lua의 프로토타입
호출된 함수는 아무 것도 반환하지 않고 객체를 취하는 함수입니다.
클래스 TXN을 항목으로 사용합니다. 기능 fcn(TXN).

5. 그만큼 샘플 가져오기 문맥. 이 함수는 TXN 객체를 엔트리 인수로 취하고
문자열을 반환합니다. 이러한 유형의 기능은 차단 기능을 실행할 수 없습니다. 그들
원본 HAProxy 샘플 가져오기 중 일부를 집계하고 결과를 반환하는 데 유용합니다.
함수의 프로토타입은 기능 fcn(TXN). 이러한 기능은
Lua 기능에 등록 core.register_fetches(). 선언된 각 샘플 가져오기는
문자열 "lua."가 접두사로 붙습니다.

주의사항: 이 기능이 원본에서 필요한 데이터를 찾지 못할 수 있습니다.
HAProxy 샘플 가져오기, 이 경우 결과를 반환할 수 없습니다. 이 사건은 아직
되지 않습니다.

6. 그만큼 변환기 문맥. 문자열을 입력받아 반환하는 Lua 함수입니다.
다른 문자열을 출력으로 사용합니다. 이러한 유형의 함수는 상태 비저장이므로 액세스할 수 없습니다.
어떤 맥락. 차단 기능을 실행하지 않습니다. 호출 프로토타입은 기능
fcn(문자열). 이 기능은 Lua 기능으로 등록할 수 있습니다.
core.register_converters(). 선언된 각 변환기에는 문자열 "lua."가 접두사로 붙습니다.

하프록시 LUA 안녕하세요 세계


HAProxy 구성 파일(hello_world.conf):

글로벌
루아 로드 hello_world.lua

프록시 듣기
바인드 127.0.0.1:10001
tcp-request 검사-지연 1초
tcp-request 콘텐츠 사용 서비스 lua.hello_world

HAProxy Lua 파일(hello_world.lua):

core.register_service("hello_world", "tcp", 함수(애플릿)
애플릿:send("hello world\n")
끝)

이 구성을 테스트하기 위해 HAProxy를 시작하는 방법:

./haproxy -f hello_world.conf

다른 터미널에서는 텔넷으로 테스트할 수 있습니다.

#:~ 텔넷 127.0.0.1 10001
안녕하세요

수업 핵심()
"core" 클래스에는 모든 HAProxy 핵심 기능이 포함되어 있습니다. 이 기능은 유용합니다
실행 흐름 제어, 후크 등록, 전역 맵 조작
또는 ACL, ...

"core" 클래스는 기본적으로 HAProxy와 함께 제공됩니다. 아니 필요 라인이 필요합니다
이러한 기능을 사용합니다.

"핵심" 클래스는 정적이므로 이 유형의 새 개체를 만들 수 없습니다.

core.emerg

반품
정수

이 속성은 정수이며 로그 수준 "비상" 값을 포함합니다.
(0).

코어.경고

반품
정수

이 속성은 정수이며 로그 수준 "경고"(1) 값을 포함합니다.

코어.크릿

반품
정수

이 속성은 정수이며 로그 수준 "critical"(2) 값을 포함합니다.

코어.err

반품
정수

이 속성은 정수이며 로그 수준 "오류"(3) 값을 포함합니다.

핵심.경고

반품
정수

이 속성은 정수이며 로그 수준 "경고"(4) 값을 포함합니다.

코어.알림

반품
정수

이 속성은 정수이며 로그 수준 "통지"(5) 값을 포함합니다.

core.info

반품
정수

이 속성은 정수이며 로그 수준 "정보"(6) 값을 포함합니다.

코어.디버그

반품
정수

이 속성은 정수이며 로그 수준 "디버그"(7) 값을 포함합니다.

core.log(로그 수준, 메시지)
문맥: 본문, 초기화, 작업, 작업, 샘플 가져오기, 변환기

이 함수는 로그를 보냅니다. HAProxy에 따라 로그가 전송됩니다.
구성 파일(구성된 경우 기본 syslog 서버 및
허용되는 경우 stderr입니다.

인수

· 로그 레벨 (정수) -- 메시지와 관련된 로그 수준입니다. 이것은
0과 7 사이의 숫자.

· 메시지 () -- 로그 내용입니다.

만나다 core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug(로그 수준 정의)

만나다 코드.디버그

만나다 코어.정보

만나다 핵심.경고

만나다 핵심.경고

코어.디버그(메시지)
문맥: 본문, 초기화, 작업, 작업, 샘플 가져오기, 변환기

인수

· 메시지 () -- 로그 내용입니다.

만나다 기록

다음과 동일한 작업을 수행합니다.

기능 디버그(메시지)
core.log(core.debug, 메시지)
end

코어.정보(메시지)
문맥: 본문, 초기화, 작업, 작업, 샘플 가져오기, 변환기

인수

· 메시지 () -- 로그 내용입니다.

만나다 기록

기능 정보(메시지)
core.log(core.info, 메시지)
end

핵심.경고(메시지)
문맥: 본문, 초기화, 작업, 작업, 샘플 가져오기, 변환기

인수

· 메시지 () -- 로그 내용입니다.

만나다 기록

기능 경고(메시지)
core.log(core.warning, msg)
end

핵심.경고(메시지)
문맥: 본문, 초기화, 작업, 작업, 샘플 가져오기, 변환기

인수

· 메시지 () -- 로그 내용입니다.

만나다 기록

기능 경보(메시지)
core.log(core.alert, 메시지)
end

core.add_acl(파일명, 키)
문맥: 초기화, 작업, 작업, 샘플 가져오기, 변환기

ACL 추가 파일에서 참조하는 ACL 목록에서 파일 이름.

인수

· 파일 이름 () -- ACL 항목을 참조하는 파일 이름.

· () -- 추가될 키.

core.del_acl(파일명, 키)
문맥: 초기화, 작업, 작업, 샘플 가져오기, 변환기

키에서 참조하는 ACL 항목 삭제 에서 참조하는 ACL 목록에서
파일 이름.

인수

· 파일 이름 () -- ACL 항목을 참조하는 파일 이름.

· () -- 삭제할 키입니다.

core.del_map(파일명, 키)
문맥: 초기화, 작업, 작업, 샘플 가져오기, 변환기

참조된 맵 목록에서 지정된 키로 인덱싱된 맵 항목 삭제
그의 파일 이름으로.

인수

· 파일 이름 () -- 맵 항목을 참조하는 파일 이름.

· () -- 삭제할 키입니다.

core.ms수면(밀리초)
문맥: 본문, 초기화, 작업, 작업

XNUMXD덴탈의 core.msleep() 지정된 밀리초 사이에 Lua 실행을 중지합니다.

인수

· 밀리 초 (정수) -- 필요한 밀리초.

core.register_action(이름, 행위, 기능)
문맥: 신체

액션으로 실행되는 Lua 함수를 등록합니다. 등록된 모든 액션을 사용할 수 있습니다.
접두사 "lua."를 사용하여 HAProxy에서. 작업은 TXN 개체 클래스를 입력으로 가져옵니다.

인수

· name () -- 변환기의 이름입니다.

· 행위 (테이블) -- HAProxy 작업을 설명하는 문자열 테이블입니다.
에 등록하고 싶습니다. 예상되는 작업은 'tcp-req', 'tcp-res',
'http-req' 또는 'http-res'.

· 펑크 (기능) -- 변환기로 작동하도록 호출된 Lua 함수입니다.

인수로 사용된 Lua 함수의 프로토타입은 다음과 같습니다.

기능(txn)

·

txn (TXN 수업): 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 요청 콘텐츠 lua.hello-world

프론트엔드 http_frt
모드 http
http-요청 lua.hello-world

core.register_converters(이름, 기능)
문맥: 신체

변환기로 실행되는 Lua 함수를 등록합니다. 등록된 모든 변환기는
접두사 "lua."와 함께 HAProxy에서 사용됩니다. 변환기는 문자열을 입력으로 받고
문자열을 출력으로 반환합니다. 등록된 함수는 다음과 같이 최대 9개의 값을 가질 수 있습니다.
매개변수. 모든 값은 문자열입니다.

인수

· name () -- 변환기의 이름입니다.

· 펑크 (기능) -- 변환기로 작동하도록 호출된 Lua 함수입니다.

인수로 사용된 Lua 함수의 프로토타입은 다음과 같습니다.

함수(str, [p1 [, p2 [, ... [, p5]]]]])

· 하위 버전 (): 문자열로 자동 변환된 입력값입니다.

· p1 .. p5 (): 이것은 haroxy에 선언된 문자열 인수의 목록입니다.
구성 파일. 인수의 수는 5를 초과하지 않습니다. 순서 및
이러한 특성은 일반적으로 개발자가 선택합니다.

core.register_fetches(이름, 기능)
문맥: 신체

샘플 가져오기로 실행되는 Lua 함수를 등록합니다. 등록된 모든 샘플 가져오기
접두사 "lua."와 함께 HAProxy에서 사용할 수 있습니다. Lua 샘플 가져오기는 문자열을 반환합니다.
출력으로. 등록된 함수는 최대 9개의 값을 매개변수로 사용할 수 있습니다. 모든
값은 문자열입니다.

인수

· name () -- 변환기의 이름입니다.

· 펑크 (기능) -- 샘플 가져오기로 작동하도록 호출된 Lua 함수입니다.

인수로 사용된 Lua 함수의 프로토타입은 다음과 같습니다.

문자열 함수(txn, [p1 [, p2 [, ... [, p5]]]]])

· txn (TXN 수업): 이것은 현재 요청과 관련된 txn 객체입니다.

· p1 .. p5 (): 이것은 haroxy에 선언된 문자열 인수의 목록입니다.
구성 파일. 인수의 수는 5를 초과하지 않습니다. 순서 및
이러한 특성은 일반적으로 개발자가 선택합니다.

· 반품: 일부 데이터를 포함하는 문자열, 현재 값을 반환할 수 없는 경우 nil.

루아 예제 코드:

core.register_fetches("안녕하세요", 함수(txn)
"안녕하세요"를 반환
끝)
HAProxy 구성 예시:

프론트엔드 예제
http-redirect 리디렉션 위치 /%[lua.hello]

core.register_service(이름, 모드, 기능)
문맥: 신체

서비스로 실행되는 Lua 함수를 등록합니다. 등록된 모든 서비스는
접두사 "lua."와 함께 HAProxy에서 사용됩니다. 서비스는 개체 클래스를 입력으로 가져옵니다.
필요한 모드에 따라.

인수

· name () -- 변환기의 이름입니다.

· 모드 () -- 필요한 모드를 설명하는 문자열입니다. 'tcp'만 또는
'http'가 허용됩니다.

· 펑크 (기능) -- 변환기로 작동하도록 호출된 Lua 함수입니다.

인수로 사용된 Lua 함수의 프로토타입은 다음과 같습니다.

기능(애플릿)

· 애플릿 애플릿 ~ 될 것입니다. 애플릿TCP 수업 또는 애플릿HTTP 수업. 종류에 따라 다릅니다
등록된 애플릿의 'http' 값으로 등록된 애플릿 모드
매개변수는 애플릿HTTP 수업. 경우 모드 값이 'tcp'이면 애플릿은
~을 얻다 애플릿TCP 수업.

경고: 'http' 유형의 애플릿은 'tcp-'에서 호출할 수 없습니다.' 규칙 집합. 전에, 'http-'
규칙 집합이 승인되었습니다. 즉, 다음에서 HTTP 애플릿을 호출할 수 없습니다.
tcp 모드의 프록시. 'tcp' 유형의 애플릿은 어디서나 호출할 수 있습니다.

다음은 서비스 등록의 예입니다. 서비스는 'Hello world'를 보내기만 하면 됩니다.
http 응답.

core.register_service("hello-world", "http", 함수(애플릿)
로컬 응답 = "Hello World !"
애플릿:set_status(200)
애플릿:add_header("콘텐츠 길이", string.len(응답))
애플릿:add_header("콘텐츠 유형", "텍스트/일반")
애플릿:start_response()
애플릿:보내기(응답)
끝)
이 예제 코드는 다음과 같은 HAproxy 구성에서 사용됩니다.

프론트엔드 예제
http-request 사용 서비스 lua.hello-world

core.register_init(함수)
문맥: 신체

구성 파싱 후 실행되는 함수를 등록합니다. 이것은 유용하다
매개변수를 확인하십시오.

인수

· 펑크 (기능) -- 이니셜라이저로 작동하도록 호출된 Lua 함수입니다.

인수로 사용된 Lua 함수의 프로토타입은 다음과 같습니다.

기능()
입력이 필요하지 않으며 출력이 예상되지 않습니다.

core.register_task(함수)
문맥: 본문, 초기화, 작업, 작업, 샘플 가져오기, 변환기

독립 작업을 등록하고 시작합니다. 작업은 HAProxy 메인이 시작될 때 시작됩니다.
스케줄러가 시작됩니다. 예를 들어 이러한 유형의 작업은 복잡한 작업을 수행하기 위해 실행할 수 있습니다.
건강 검진.

인수

· 펑크 (기능) -- 이니셜라이저로 작동하도록 호출된 Lua 함수입니다.

인수로 사용된 Lua 함수의 프로토타입은 다음과 같습니다.

기능()
입력이 필요하지 않으며 출력이 예상되지 않습니다.

core.set_nice(좋은)
문맥: 작업, 작업, 샘플 가져오기, 변환기

현재 작업 또는 현재 세션의 nice를 변경합니다.

인수

· 좋은 (정수) -- nice 값, -1024에서 1024 사이여야 합니다.

core.set_map(파일명, 키, 값)
문맥: 초기화, 작업, 작업, 샘플 가져오기, 변환기

값을 설정 가치 키에 연결된 에서 참조한 지도에서 파일 이름.

인수

· 파일 이름 () -- 지도 참조

· () -- 설정하거나 대체할 키

· 가치 () -- 연결된 값

코어.수면(정수 초)
문맥: 본문, 초기화, 작업, 작업

XNUMXD덴탈의 코어.수면() 함수는 지정된 초 사이에 Lua 실행을 중지합니다.

인수

· (정수) -- 필요한 초.

코어.tcp()
문맥: 초기화, 작업, 작업

이 함수는 소켓 클래스입니다.

반품
A 소켓 수업 목적.

core.done(데이터)
문맥: 본문, 초기화, 작업, 작업, 샘플 가져오기, 변환기

인수

· 데이터 (어떤) -- 호출자에 대한 일부 데이터를 반환합니다. 그것은 유용하다
샘플 가져오기 및 샘플 변환기.

현재 Lua 실행을 즉시 중지하고 호출자에게 반환합니다.
샘플 가져오기, 변환기 또는 작업을 수행하고 지정된 값을 반환합니다(무시
행동). LUA 프로세스가 작업을 완료하고 제공하고자 할 때 사용됩니다.
나머지 코드를 실행하지 않고 컨트롤을 HAProxy로 되돌립니다. 그것은 다음과 같이 볼 수 있습니다
다단계 "반환".

코어.수율()
문맥: 작업, 작업, 샘플 가져오기, 변환기

HAProxy 스케줄러에 손을 돌려주세요. LUA 처리 시 사용
처리 시간이 많이 소요됩니다.

수업 가져오기()
이 클래스에는 많은 내부 HAProxy 샘플 가져오기가 포함되어 있습니다. HAProxy 보기
사용법에 대한 자세한 내용은 "configuration.txt" 문서를 참조하세요. 그들은
7.3.2 ~ 7.3.6 장.

경고 일부 샘플 가져오기는 일부 컨텍스트에서 사용할 수 없습니다. 이러한 제한
유용할 때 이 문서에 지정되어 있습니다.

만나다 TXN.f

만나다 TXN.sf

가져오기는 다음과 같은 경우에 유용합니다.

· 시스템 시간 얻기,

· 환경 변수 가져오기,

· 난수 얻기,

· 대기열에 있는 사용자 수 또는 사용자 수와 같은 알려진 백엔드 상태
연결 설정,

· IP 소스 또는 대상과 같은 클라이언트 정보,

· 스틱 테이블 다루기,

· SSL 정보 설정,

· 헤더 또는 메소드와 같은 HTTP 정보.

기능 동작(txn)
-- 소스 IP 가져오기
로컬 클라이언트ip = txn.f:src()
end

수업 변환기()
이 클래스에는 많은 내부 HAProxy 샘플 변환기가 포함되어 있습니다. HAProxy 보기
그녀의 사용법에 대한 자세한 내용은 문서 "configuration.txt"를 참조하십시오. 그건
7.3.1 장.

만나다 TXN.c

만나다 TXN.sc

변환기는 상태 저장 변환을 제공합니다. 다음과 같은 경우에 유용합니다.

· 입력을 base64로 변환,

· 입력 문자열(djb2, crc32, sdbm, wt6)에 해시 적용,

· 형식 날짜,

· json 이스케이프,

· 두 목록을 비교하여 선호하는 언어 추출,

· 하단 또는 상단 문자로 전환,

· 막대기 테이블을 처리합니다.

수업 채널()
HAProxy는 요청 처리를 위해 두 개의 버퍼를 사용합니다. 첫 번째가 사용됩니다.
요청 데이터와 함께(클라이언트에서 서버로) 두 번째는 다음을 위해 사용됩니다.
응답 데이터(서버에서 클라이언트로).

각 버퍼에는 두 가지 유형의 데이터가 있습니다. 첫 번째 유형은 들어오는 데이터 대기입니다.
처리를 위해. 두 번째 부분은 이미 처리된 나가는 데이터입니다. 대개,
들어오는 데이터는 나가는 데이터로 태그가 지정된 후 처리되고 마지막으로
보냈다. 다음 함수는 이러한 데이터를 조작하기 위한 도구를 제공합니다.
버퍼.

다음 다이어그램은 채널 클래스 기능이 적용되는 위치를 보여줍니다.

경고: 요청 조치의 응답에서 읽을 수 없으며
응답 작업에서 요청 채널을 읽을 수 없습니다.
[이미지]

Channel.dup(채널)
이 함수는 전체 버퍼를 포함하는 문자열을 반환합니다. 데이터가 아니다
버퍼에서 제거하고 나중에 다시 처리할 수 있습니다.

버퍼가 더 많은 데이터를 수신할 수 없으면 'nil' 값이 반환됩니다.

인수

· 채널 (클래스_채널) -- 조작된 채널입니다.

반품
사용 가능한 모든 데이터를 포함하는 문자열 또는 nil.

Channel.get(채널)
이 함수는 전체 버퍼를 포함하는 문자열을 반환합니다. 데이터가 소모됩니다
버퍼에서.

버퍼가 더 많은 데이터를 수신할 수 없으면 'nil' 값이 반환됩니다.

인수

· 채널 (클래스_채널) -- 조작된 채널입니다.

반품
사용 가능한 모든 데이터를 포함하는 문자열 또는 nil.

Channel.getline(채널)
이 함수는 버퍼의 첫 번째 줄을 포함하는 문자열을 반환합니다. 자료
소모됩니다. 반환된 데이터에 최종 'n'이 포함되지 않은 경우
버퍼에서 사용 가능한 마지막 데이터입니다.

버퍼가 더 많은 데이터를 수신할 수 없으면 'nil' 값이 반환됩니다.

인수

· 채널 (클래스_채널) -- 조작된 채널입니다.

반품
사용 가능한 줄을 포함하는 문자열 또는 nil.

Channel.set(채널, 끈)
이 함수는 버퍼의 내용을 문자열로 바꿉니다. 함수 반환
복사된 길이, 그렇지 않으면 -1을 반환합니다.

이 기능으로 설정된 데이터는 전송되지 않습니다. 그들은 HAProxy가 끝날 때까지 기다립니다.
버퍼가 가득 찰 수 있도록 처리합니다.

인수

· 채널 (클래스_채널) -- 조작된 채널입니다.

· () -- 보낼 데이터입니다.

반품
복사된 바이트의 양을 포함하는 정수 또는 -1입니다.

Channel.append(채널, 끈)
이 함수는 버퍼의 내용에 문자열 인수를 추가합니다. 함수
복사된 길이를 반환하고, 그렇지 않으면 -1을 반환합니다.

이 기능으로 설정된 데이터는 전송되지 않습니다. 그들은 HAProxy가 끝날 때까지 기다립니다.
버퍼가 가득 찰 수 있도록 처리합니다.

인수

· 채널 (클래스_채널) -- 조작된 채널입니다.

· () -- 보낼 데이터입니다.

반품
복사된 바이트의 양을 포함하는 정수 또는 -1입니다.

Channel.send(채널, 끈)
이 기능은 데이터의 즉각적인 전송이 필요했습니다. 연결이 되지 않는 한
닫으면 버퍼가 정기적으로 플러시되고 모든 문자열을 보낼 수 있습니다.

인수

· 채널 (클래스_채널) -- 조작된 채널입니다.

· () -- 보낼 데이터입니다.

반품
복사된 바이트의 양을 포함하는 정수 또는 -1입니다.

Channel.get_in_length(채널)
이 함수는 버퍼의 입력 부분의 길이를 반환합니다.

인수

· 채널 (클래스_채널) -- 조작된 채널입니다.

반품
사용 가능한 바이트의 양을 포함하는 정수.

Channel.get_out_length(채널)
이 함수는 버퍼의 출력 부분의 길이를 반환합니다.

인수

· 채널 (클래스_채널) -- 조작된 채널입니다.

반품
사용 가능한 바이트의 양을 포함하는 정수.

Channel.forward(채널, 정수)
이 함수는 버퍼의 입력 부분에서 출력 부분으로 바이트를 전송합니다.

인수

· 채널 (클래스_채널) -- 조작된 채널입니다.

· INT (정수) -- 전달할 데이터의 양.

수업 HTTP()
이 클래스에는 모든 HTTP 조작 기능이 포함되어 있습니다.

HTTP.req_get_headers(http)
모든 요청 헤더를 포함하는 배열을 반환합니다.

인수

· HTTP (class_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["수락"][1] = "오디오/*, q=0.2"
hdr["수락"][2] = "*/*, q=0.1"

HTTP.res_get_headers(http)
모든 응답 헤더를 포함하는 배열을 반환합니다.

인수

· HTTP (class_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["수락"][1] = "오디오/*, q=0.2"
hdr["수락"][2] = "*.*, q=0.1"

HTTP.req_add_header(http, 이름, 값)
"name"에 이름이 지정된 요청에 HTTP 헤더 필드를 추가하고
그 값은 "값"에 정의되어 있습니다.

인수

· HTTP (class_http) -- 관련된 http 객체.

· name () -- 헤더 이름입니다.

· 가치 () -- 헤더 값입니다.

만나다 HTTP.res_add_header()

HTTP.res_add_header(http, 이름, 값)
"name"에 이름이 지정된 응답에 HTTP 헤더 필드를 추가하고
그 값은 "값"에 정의되어 있습니다.

인수

· HTTP (class_http) -- 관련된 http 객체.

· name () -- 헤더 이름입니다.

· 가치 () -- 헤더 값입니다.

만나다 HTTP.req_add_header()

HTTP.req_del_header(http, 이름)
"name"에 이름이 지정된 요청의 모든 HTTP 헤더 필드를 제거합니다.

인수

· HTTP (class_http) -- 관련된 http 객체.

· name () -- 헤더 이름입니다.

만나다 HTTP.res_del_header()

HTTP.res_del_header(http, 이름)
"name"에 이름이 지정된 응답의 모든 HTTP 헤더 필드를 제거합니다.

인수

· HTTP (class_http) -- 관련된 http 객체.

· name () -- 헤더 이름입니다.

만나다 HTTP.req_del_header()

HTTP.req_set_header(http, 이름, 값)
이 변수는 모든 헤더 "이름"의 모든 발생을 다음을 포함하는 하나만으로 대체합니다.
가치".

인수

· HTTP (class_http) -- 관련된 http 객체.

· name () -- 헤더 이름입니다.

· 가치 () -- 헤더 값입니다.

만나다 HTTP.res_set_header()

이 함수는 다음 코드와 동일한 작업을 수행합니다.

함수 fcn(txn)
TXN.http:req_del_header("헤더")
TXN.http:req_add_header("헤더", "값")
end

HTTP.res_set_header(http, 이름, 값)
이 변수는 모든 헤더 "이름"의 모든 발생을 다음을 포함하는 하나만으로 대체합니다.
가치".

인수

· HTTP (class_http) -- 관련된 http 객체.

· name () -- 헤더 이름입니다.

· 가치 () -- 헤더 값입니다.

만나다 HTTP.req_rep_header()

HTTP.req_rep_header(http, 이름, 정규식, 바꾸다)
에 따라 헤더 필드 "name"의 모든 발생에서 정규식과 일치합니다.
"regex"로 바꾸고 "replace" 인수로 바꿉니다. 대체 가치
1, 2, ...와 같은 역 참조를 포함할 수 있습니다. 이 함수는 요청과 함께 작동합니다.

인수

· HTTP (class_http) -- 관련된 http 객체.

· name () -- 헤더 이름입니다.

· 정규식 () -- 정규 표현식과 일치합니다.

· 교체 () -- 대체 값입니다.

만나다 HTTP.res_rep_header()

HTTP.res_rep_header(http, 이름, 정규식, 끈)
에 따라 헤더 필드 "name"의 모든 발생에서 정규식과 일치합니다.
"regex"로 바꾸고 "replace" 인수로 바꿉니다. 대체 가치
1, 2, ...와 같은 역 참조를 포함할 수 있습니다. 이 함수는 요청과 함께 작동합니다.

인수

· HTTP (class_http) -- 관련된 http 객체.

· name () -- 헤더 이름입니다.

· 정규식 () -- 정규 표현식과 일치합니다.

· 교체 () -- 대체 값입니다.

만나다 HTTP.req_replace_header()

HTTP.req_replace_value(http, 이름, 정규식, 바꾸다)
정규식과 일치한다는 점을 제외하고 "HTTP.req_replace_header()"처럼 작동합니다.
전체 대신 헤더 필드 "이름"의 모든 쉼표로 구분된 값
헤더.

인수

· HTTP (class_http) -- 관련된 http 객체.

· name () -- 헤더 이름입니다.

· 정규식 () -- 정규 표현식과 일치합니다.

· 교체 () -- 대체 값입니다.

만나다 HTTP.req_replace_header()

만나다 HTTP.res_replace_value()

HTTP.res_replace_value(http, 이름, 정규식, 바꾸다)
정규식과 일치한다는 점을 제외하면 "HTTP.res_replace_header()"처럼 작동합니다.
전체 대신 헤더 필드 "이름"의 모든 쉼표로 구분된 값
헤더.

인수

· HTTP (class_http) -- 관련된 http 객체.

· name () -- 헤더 이름입니다.

· 정규식 () -- 정규 표현식과 일치합니다.

· 교체 () -- 대체 값입니다.

만나다 HTTP.res_replace_header()

만나다 HTTP.req_replace_value()

HTTP.req_set_method(http, 방법)
"method" 매개변수를 사용하여 요청 메서드를 다시 작성합니다.

인수

· HTTP (class_http) -- 관련된 http 객체.

· 방법 () -- 새로운 방법.

HTTP.req_set_path(http, 경로)
"path" 매개변수를 사용하여 요청 경로를 다시 작성합니다.

인수

· HTTP (class_http) -- 관련된 http 객체.

· 통로 () -- 새 경로입니다.

HTTP.req_set_query(http, 질문)
첫 번째 물음표 뒤에 나타나는 요청의 쿼리 문자열을 다시 작성합니다.
("?") 매개변수 "query"를 사용합니다.

인수

· HTTP (class_http) -- 관련된 http 객체.

· 질문 () -- 새 쿼리입니다.

HTTP.req_set_uri(http, 우리)
"uri" 매개변수를 사용하여 요청 URI를 다시 작성합니다.

인수

· HTTP (class_http) -- 관련된 http 객체.

· () -- 새로운 URI.

HTTP.res_set_status(http, 상태)
매개변수 "code"로 응답 상태 코드를 다시 작성합니다. 그 이유를 참고하세요
새 코드에 자동으로 적용됩니다.

인수

· HTTP (class_http) -- 관련된 http 객체.

· 지위 (정수) -- 새 응답 상태 코드입니다.

수업 TXN()
txn 클래스는 http 또는 tcp 트랜잭션과 관련된 모든 기능을 포함합니다.
(tcp 스트림은 tcp 트랜잭션과 동일하지만 HTTP 트랜잭션은
tcp 스트림과 동일하지 않음).

이 클래스를 사용하면 요청에서 데이터를 검색하고 변경하고
전달합니다.

이 클래스에서 제공하는 모든 기능은 컨텍스트에서 사용할 수 있습니다.
샘플 가져오기행위.

TXN.c

반품
An 변환기 수업.

이 속성에는 Converters 클래스 개체가 포함되어 있습니다.

TXN.sc

반품
An 변환기 수업.

이 속성에는 Converters 클래스 개체가 포함되어 있습니다. 이 객체의 기능
항상 문자열을 반환합니다.

TXN.f

반품
An 가져 오기 수업.

이 속성에는 Fetches 클래스 개체가 포함되어 있습니다.

TXN.sf

반품
An 가져 오기 수업.

이 속성에는 Fetches 클래스 개체가 포함되어 있습니다. 이 객체의 기능
항상 문자열을 반환합니다.

TXN.req

반품
An 채널 수업.

이 속성은 요청 버퍼에 대한 채널 클래스 객체를 포함합니다.

TXN.res

반품
An 채널 수업.

이 속성은 응답 버퍼에 대한 채널 클래스 개체를 포함합니다.

TXN.http

반품
An HTTP 수업.

이 속성은 HTTP 클래스 개체를 포함합니다. 프록시가 있는 경우에만 사용할 수 있습니다.
"모드 http"가 활성화되었습니다.

TXN.log(TXN, 로그 수준, 메시지)
이 함수는 로그를 보냅니다. HAProxy에 따라 로그가 전송됩니다.
구성 파일(구성된 경우 기본 syslog 서버 및
허용되는 경우 stderr입니다.

인수

· txn (class_txn) -- 데이터를 포함하는 클래스 txn 객체.

· 로그 레벨 (정수) -- 메시지와 관련된 로그 수준입니다. 이것은
0과 7 사이의 숫자.

· 메시지 () -- 로그 내용입니다.

만나다 core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug(로그 수준 정의)

만나다 TXN.디플로그

만나다 TXN.디버그

만나다 TXN.정보

만나다 TXN.경고

만나다 TXN.경고

TXN.deflog(TXN, 메시지)
와 연결된 프록시에 대한 기본 로그 수준이 있는 로그 줄을 보냅니다.
트랜잭션.

인수

· txn (class_txn) -- 데이터를 포함하는 클래스 txn 객체.

· 메시지 () -- 로그 내용입니다.

만나다 TXN.log

TXN.디버그(txn, 메시지)

인수

· txn (class_txn) -- 데이터를 포함하는 클래스 txn 객체.

· 메시지 () -- 로그 내용입니다.

만나다 TXN.log

다음과 동일한 작업을 수행합니다.

함수 디버그(txn, msg)
TXN.log(txn, core.debug, msg)
end

TXN.정보(TXN, 메시지)

인수

· txn (class_txn) -- 데이터를 포함하는 클래스 txn 객체.

· 메시지 () -- 로그 내용입니다.

만나다 TXN.log

함수 디버그(txn, msg)
TXN.log(txn, core.info, msg)
end

TXN.경고(txn, 메시지)

인수

· txn (class_txn) -- 데이터를 포함하는 클래스 txn 객체.

· 메시지 () -- 로그 내용입니다.

만나다 TXN.log

함수 디버그(txn, msg)
TXN.log(txn, core.warning, msg)
end

TXN.Alert(TXN, 메시지)

인수

· txn (class_txn) -- 데이터를 포함하는 클래스 txn 객체.

· 메시지 () -- 로그 내용입니다.

만나다 TXN.log

함수 디버그(txn, msg)
TXN.log(txn, core.alert, msg)
end

TXN.get_priv(txn)
현재 트랜잭션에 저장된 Lua 데이터를 반환합니다( TXN.set_priv())
기능. 데이터가 저장되어 있지 않으면 nil 값을 반환합니다.

인수

· txn (class_txn) -- 데이터를 포함하는 클래스 txn 객체.

반품
이전에 저장된 불투명한 데이터 또는 사용 가능한 것이 없으면 nil입니다.

TXN.set_priv(TXN, 데이터)
현재 HAProxy 트랜잭션에 모든 데이터를 저장합니다. 이 작업은 이전
저장된 데이터.

인수

· txn (class_txn) -- 데이터를 포함하는 클래스 txn 객체.

· 데이터 (불투명체) -- 트랜잭션에 저장된 데이터입니다.

TXN.set_var(TXN, 바, 값)
Lua 유형을 HAProxy 유형으로 변환하여 변수에 저장합니다 .

인수

· txn (class_txn) -- 데이터를 포함하는 클래스 txn 객체.

· 였다 () -- HAProxy 변수에 따른 변수 이름
통사론.

· 가치 (불투명체) -- 변수에 저장된 데이터입니다.

TXN.get_var(TXN, 변수)
변수 변환기에 저장된 데이터 를 Lua 형식으로 반환 합니다.

인수

· txn (class_txn) -- 데이터를 포함하는 클래스 txn 객체.

· 였다 () -- HAProxy 변수에 따른 변수 이름
통사론.

TXN.get_headers(txn)
이 함수는 헤더 배열을 반환합니다.

인수

· txn (class_txn) -- 데이터를 포함하는 클래스 txn 객체.

반품
헤더 배열.

TXN.완료(txn)
이 함수는 트랜잭션 및 관련 세션의 처리를 종료합니다.
치명적인 오류가 감지되었을 때나 처리를 종료할 때 사용할 수 있습니다.
일부 데이터가 클라이언트에 반환되었습니다(예: 리디렉션).

인수

· txn (class_txn) -- 데이터를 포함하는 클래스 txn 객체.

TXN.set_loglevel(txn, 로그 수준)
현재 요청의 로그 수준을 변경하는 데 사용됩니다. "loglevel"은
0과 7 사이의 정수.

인수

· txn (class_txn) -- 데이터를 포함하는 클래스 txn 객체.

· 로그 레벨 (정수) -- 필요한 로그 수준입니다. 이 변수는 다음 중 하나일 수 있습니다.

만나다 핵심.

TXN.set_tos(TXN, 던지다)
클라이언트에게 보낸 패킷의 TOS 또는 DSCP 필드 값을 설정하는 데 사용됩니다.
이를 지원하는 플랫폼에서 "tos"로 전달된 값.

인수

· txn (class_txn) -- 데이터를 포함하는 클래스 txn 객체.

· TOS (정수) -- 새로운 TOS OS DSCP.

TXN.set_mark(TXN, 표시)
클라이언트에 전송된 모든 패킷의 Netfilter MARK를 값으로 설정하는 데 사용됩니다.
지원하는 플랫폼에서 "표시"로 전달됩니다.

인수

· txn (class_txn) -- 데이터를 포함하는 클래스 txn 객체.

· (정수) -- 마크 값입니다.

수업 소켓()
이 클래스는 Lua 소켓 클래스와 호환되어야 합니다. 오직 '클라이언트'
기능을 사용할 수 있습니다. Lua 소켓 문서를 참조하십시오.

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

Socket.close(소켓)
TCP 개체를 닫습니다. 객체가 사용하는 내부 소켓이 닫히고 로컬
개체가 바인딩된 주소는 다른 응용 프로그램에서 사용할 수 있습니다. 아니
추가 작업(close 메소드에 대한 추가 호출 제외)은
닫힌 소켓.

인수

· 소켓 (클래스 소켓) -- 조작된 소켓입니다.

참고: 사용된 모든 소켓은 필요하지 않은 경우 닫는 것이 중요합니다.
많은 시스템에서 각 소켓은 제한된 시스템인 파일 설명자를 사용합니다.
자원. 가비지 수집품은 파기 전에 자동으로 닫히며,
그래도.

Socket.connect(소켓, 주소[, 포트])
소켓 개체를 원격 호스트에 연결하려고 시도합니다.

오류가 발생하면 이 메서드는 오류를 설명하는 문자열이 뒤에 오는 nil을 반환합니다.
성공하면 메서드는 1을 반환합니다.

인수

· 소켓 (클래스 소켓) -- 조작된 소켓입니다.

· 주소 () -- IP 주소 또는 호스트 이름일 수 있습니다. 아래 참조
자세한 정보.

· 포트 (정수) -- [1..64K] 범위의 정수여야 합니다.

반품
1 또는 XNUMX입니다.

주소 필드 확장은 connect() 함수를 사용하여 연결할 수 있습니다.
TCP 이외의 다른 스트림. simpleipv4 또는 ipv6 주소를 포함하는 구문은 다음과 같습니다.
기본적으로 예상되는 형식입니다. 이 형식에는 포트가 필요합니다.

허용되는 다른 형식은 "/socket/path"와 같은 소켓 경로이며 연결을 허용합니다.
소켓에. 추상 네임스페이스는 접두사 "abns@"로 지원되며 마지막으로
filedescriotr은 접두사 "fd@"와 함께 전달할 수 있습니다. 접두사 "ipv4@", "ipv6@"
및 "unix@"도 지원됩니다. 포트는 문자열로 전달할 수 있습니다. 구문
"127.0.0.1:1234"가 유효합니다. 이 경우 매개변수 포트 무시됩니다.

Socket.connect_ssl(소켓, 주소, 포트)
socket:connect 기능과 동일한 동작이지만 SSL을 사용합니다.

인수

· 소켓 (클래스 소켓) -- 조작된 소켓입니다.

반품
1 또는 XNUMX입니다.

Socket.getpeername(소켓)
연결된 클라이언트 개체의 원격 측에 대한 정보를 반환합니다.

피어의 IP 주소가 있는 문자열을 반환하고 그 뒤에 해당하는 포트 번호가 표시됩니다.
피어가 연결에 사용 중입니다. 오류가 발생하면 메서드는 nil을 반환합니다.

인수

· 소켓 (클래스 소켓) -- 조작된 소켓입니다.

반품
서버 정보를 포함하는 문자열.

Socket.getsockname(소켓)
개체와 관련된 로컬 주소 정보를 반환합니다.

이 메서드는 로컬 IP 주소가 포함된 문자열과 포트가 포함된 숫자를 반환합니다. 에
오류의 경우 메서드는 nil을 반환합니다.

인수

· 소켓 (클래스 소켓) -- 조작된 소켓입니다.

반품
클라이언트 정보를 포함하는 문자열.

Socket.receive(소켓[, 무늬[, 접두사]])
지정된 읽기 패턴에 따라 클라이언트 개체에서 데이터를 읽습니다. 패턴
Lua 파일 I/O 형식을 따르고 모든
패턴은 무시할 수 있습니다.

인수

· 소켓 (클래스 소켓) -- 조작된 소켓입니다.

· 무늬 (문자열|정수) -- 필요한 사항을 설명합니다(아래 참조).

· 접두사 () -- 반환된 데이터의 접두어가 될 문자열입니다.

반품
필요한 데이터를 포함하는 문자열 또는 nil.

패턴은 다음 중 하나일 수 있습니다.

·

`*아`: 읽기 전에, 소켓 까지 전에, 연결 is 폐쇄. 아니
줄 끝 번역이 수행됩니다.

·

`*l`: 읽기 a of 본문 전에, 소켓. XNUMXD덴탈의 is 종료 된 by a
LF 문자(ASCII 10), 선택적으로 CR 문자(ASCII 13)가 앞에 옵니다.
CR 및 LF 문자는 반환된 줄에 포함되지 않습니다. 사실은,
모든 CR 문자는 패턴에서 무시됩니다. 이것이 기본 패턴입니다.

·

번호: 원인 전에, 방법 읽기 a 지정 번호 of 바이트 전에,
소켓. 접두사는 처음에 연결할 선택적 문자열입니다.
반환하기 전에 받은 데이터의.

· : 패턴이 비어 있는 경우 기본 옵션은 *l.

성공하면 메서드는 수신된 패턴을 반환합니다. 오류가 발생한 경우,
메서드는 nil을 반환하고 그 뒤에 문자열 'closed'가 될 수 있는 오류 메시지를 반환합니다.
전송이 완료되기 전에 연결이 닫히거나 문자열이
작업 중 시간 초과가 발생한 경우 'timeout'. 또한 오류 발생 후
메시지, 함수는 전송의 부분 결과를 반환합니다.

중요 사항: 이 기능은 크게 변경되었습니다. 그것은 여러 지원하는 데 사용
패턴(하지만 이 기능이 사용되는 것을 본 적이 없음)이제 더 이상 사용되지 않습니다.
이전에는 성공적인 결과와 동일한 방식으로 부분 결과가 반환되었습니다. 이것
마지막 기능은 모든 함수가 오류 시 nil을 반환해야 한다는 생각을 위반했습니다. 따라서
그것도 변경되었습니다.

소켓.보내기(소켓, 데이터[, 시작[, 끝]])
클라이언트 개체를 통해 데이터를 보냅니다.

인수

· 소켓 (클래스 소켓) -- 조작된 소켓입니다.

· 데이터 () -- 전송할 데이터입니다.

· 스타트 (정수) -- 저장할 데이터 버퍼의 시작 위치
보내지다.

· end (정수) -- 데이터 버퍼의 끝 위치
보냈습니다.

반품
아래를 참조하십시오.

데이터는 보낼 문자열입니다. 선택적 인수 i 및 j는 다음과 같이 정확하게 작동합니다.
보낼 하위 문자열을 선택할 수 있는 표준 string.sub Lua 함수.

성공하면 메서드는 [start, end] 내의 마지막 바이트 인덱스를 반환합니다.
보낸 것입니다. start가 1이거나 없으면 이는 사실상
보낸 총 바이트 수입니다. 오류의 경우 메서드는 nil을 반환하고 그 뒤에
오류 메시지, [start, end] 내의 마지막 바이트 인덱스
전송 된. 그 다음 바이트에서 다시 시도할 수 있습니다. 오류
전송 전에 연결이 종료된 경우 메시지를 '닫을' 수 있습니다.
완료되거나 'timeout' 문자열(시간 초과가 발생한 경우)
작동.

참고: 출력은 버퍼링되지 않습니다. 작은 문자열의 경우 항상 연결하는 것이 좋습니다.
Lua에서 ('..' 연산자 사용) 대신 한 번의 호출로 결과를 보냅니다.
메서드를 여러 번 호출합니다.

소켓.설정(소켓, 옵션[, 값])
호환성을 위해 구현된 이 cal은 아무 작업도 수행하지 않습니다.

소켓.settimeout(소켓, 값[, 방법])
개체의 제한 시간 값을 변경합니다. 모든 I/O 작업이 차단됩니다. 저것
즉, send, receive 및 accept 메서드에 대한 모든 호출은 무기한 차단됩니다.
작업이 완료될 때까지. settimeout 메소드는 양에 대한 제한을 정의합니다.
I/O 메서드가 차단할 수 있는 시간. 제한 시간이 경과하면 영향을 받는
메서드는 포기하고 오류 코드와 함께 실패합니다.

대기 시간은 값 매개변수로 초 단위로 지정됩니다.

시간 초과 모드는 봇으로 구현되며 설정 가능한 유일한 시간 초과는 비활성 모드입니다.
내부 버퍼 전송 완료 또는 수신 데이터 대기 시간.

인수

· 소켓 (클래스 소켓) -- 조작된 소켓입니다.

· 가치 (정수) -- 제한 시간 값입니다.

수업 지도()
이 클래스는 HAProxy 맵에서 일부 조회를 허용합니다. 선언된 지도는 다음과 같을 수 있습니다.
런타임 중에 HAProxy 관리 소켓을 통해 수정되었습니다.

기본값 = "미국"

-- 지도 생성 및 로드
geo = Map.new("geo.map", Map.ip);

-- 사용자 국가를 반환하는 새 가져오기 만들기
core.register_fetches("국가", function(txn)
로컬 src;
로컬 위치;

src = txn.f:fhdr("x-forwarded-for");
if (src == nil) 다음
src = txn.f:src()
if (src == nil) 다음
기본값을 반환합니다.
end
end

-- 조회 수행
loc = 지리:조회(src);

if (loc == nil) 다음
기본값을 반환합니다.
end

반환 위치;
끝);

지도.int
HAProxy configuration.txt 파일의 "ACL 사용 및 샘플 가져오기" 장을 참조하십시오.
이 패턴 일치 방법을 이해하려면 하위 장 "ACL 기초"를 참조하십시오.

지도.ip HAProxy configuration.txt 파일의 "ACL 사용 및 샘플 가져오기" 장을 참조하십시오.
이 패턴 일치 방법을 이해하려면 하위 장 "ACL 기초"를 참조하십시오.

Map.str
HAProxy configuration.txt 파일의 "ACL 사용 및 샘플 가져오기" 장을 참조하십시오.
이 패턴 일치 방법을 이해하려면 하위 장 "ACL 기초"를 참조하십시오.

지도.beg
HAProxy configuration.txt 파일의 "ACL 사용 및 샘플 가져오기" 장을 참조하십시오.
이 패턴 일치 방법을 이해하려면 하위 장 "ACL 기초"를 참조하십시오.

맵.서브
HAProxy configuration.txt 파일의 "ACL 사용 및 샘플 가져오기" 장을 참조하십시오.
이 패턴 일치 방법을 이해하려면 하위 장 "ACL 기초"를 참조하십시오.

지도.디렉토리
HAProxy configuration.txt 파일의 "ACL 사용 및 샘플 가져오기" 장을 참조하십시오.
이 패턴 일치 방법을 이해하려면 하위 장 "ACL 기초"를 참조하십시오.

맵돔
HAProxy configuration.txt 파일의 "ACL 사용 및 샘플 가져오기" 장을 참조하십시오.
이 패턴 일치 방법을 이해하려면 하위 장 "ACL 기초"를 참조하십시오.

지도.끝
HAProxy configuration.txt 파일의 "ACL 사용 및 샘플 가져오기" 장을 참조하십시오.
이 패턴 일치 방법을 이해하려면 하위 장 "ACL 기초"를 참조하십시오.

Map.reg
HAProxy configuration.txt 파일의 "ACL 사용 및 샘플 가져오기" 장을 참조하십시오.
이 패턴 일치 방법을 이해하려면 하위 장 "ACL 기초"를 참조하십시오.

Map.new(파일, 방법)
지도를 만들고 로드합니다.

인수

· 파일 () -- 지도가 포함된 파일입니다.

· 방법 (정수) -- 지도 패턴 매칭 방법입니다. 속성 보기
지도 클래스의

반품
클래스 Map 객체.

만나다 맵 속성.

Map.lookup(지도, str)
지도에서 조회를 수행합니다.

인수

· 지도 (클래스_맵) -- 클래스 Map 개체입니다.

· 하위 버전 () -- 키로 사용되는 문자열입니다.

반품
결과를 포함하는 문자열 또는 일치하지 않는 경우 nil.

Map.slookup(지도, str)
지도에서 조회를 수행합니다.

인수

· 지도 (클래스_맵) -- 클래스 Map 개체입니다.

· 하위 버전 () -- 키로 사용되는 문자열입니다.

반품
결과를 포함하는 문자열 또는 일치하지 않는 경우 빈 문자열.

수업 애플릿HTTP()
이 클래스는 'http' 모드가 필요한 애플릿과 함께 사용됩니다. http 애플릿은
에 등록되다 core.register_service() 기능. 그들은 사용됩니다
HAProxy 뒤에서 서버처럼 http 요청을 처리합니다.

다음은 Hello World 샘플 코드입니다.

core.register_service("hello-world", "http", 함수(애플릿)
로컬 응답 = "Hello World !"
애플릿:set_status(200)
애플릿:add_header("콘텐츠 길이", string.len(응답))
애플릿:add_header("콘텐츠 유형", "텍스트/일반")
애플릿:start_response()
애플릿:보내기(응답)
끝)

애플릿HTTP.c

반품
A 변환기 수업

이 속성에는 Converters 클래스 개체가 포함되어 있습니다.

애플릿HTTP.sc

반품
A 변환기 수업

이 속성에는 Converters 클래스 개체가 포함되어 있습니다. 이 객체의 기능
항상 문자열을 반환합니다.

애플릿HTTP.f

반품
A 가져 오기 수업

이 속성에는 Fetches 클래스 객체가 포함되어 있습니다. 애플릿 실행
장소는 유효한 HAProxy 코어 HTTP 트랜잭션에 액세스할 수 없으므로 일부 샘플
HTTP 종속 값(hdr, 경로, ...)과 관련된 파일은 사용할 수 없습니다.

애플릿HTTP.sf

반품
A 가져 오기 수업

이 속성에는 Fetches 클래스 개체가 포함되어 있습니다. 이 객체의 기능
항상 문자열을 반환합니다. 애플릿 실행 장소는
유효한 HAProxy 코어 HTTP 트랜잭션이므로 HTTP와 관련된 일부 샘플 감염
종속 값(hdr, 경로, ...)은 사용할 수 없습니다.

애플릿HTTP.메서드

반품


속성 메서드는 HTTP 메서드를 포함하는 문자열을 반환합니다.

애플릿HTTP.버전

반품


속성 버전은 HTTP 요청 버전이 포함된 문자열을 반환합니다.

애플릿HTTP.경로

반품


속성 경로는 HTTP 요청 경로를 포함하는 문자열을 반환합니다.

애플릿HTTP.qs

반품


속성 qs는 HTTP 요청 쿼리 문자열을 포함하는 문자열을 반환합니다.

애플릿HTTP.길이

반품
정수

속성 길이는 HTTP 본문 길이를 포함하는 정수를 반환합니다.

AppletHTTP.헤더

반품
정렬

속성 헤더는 HTTP 헤더를 포함하는 배열을 반환합니다. 헤더
이름은 항상 소문자입니다. 헤더 이름이
각 요청에서 한 번 값은 첫 번째 인덱스 값으로 0으로 인덱싱됩니다. 배열
이 양식을 가지고:

AppletHTTP.헤더[' '][ ] = " "

AppletHTTP.headers["host"][0] = "www.test.com"
AppletHTTP.headers["accept"][0] = "오디오/기본 q=1"
AppletHTTP.headers["accept"][1] = "오디오/*, q=0.2"
AppletHTTP.headers["accept"][2] = "*/*, q=0.1"

AppletHTTP.헤더
모든 요청 헤더를 포함하는 배열을 포함합니다.

AppletHTTP.set_status(애플릿, 암호)
이 함수는 응답에 대한 HTTP 상태 코드를 설정합니다. 허용되는 코드는
100에 599.

인수

· 애플릿 (class_AppletHTTP) -- 안 애플릿HTTP 수업

· 암호 (정수) -- 클라이언트에 반환된 상태 코드입니다.

AppletHTTP.add_header(애플릿, 이름, 값)
이 함수는 응답에 헤더를 추가합니다. 중복된 헤더는 축소되지 않습니다.
특수 헤더 내용 길이 응답 길이를 결정하는 데 사용됩니다. 그 경우
존재하지 않는, 전송 인코딩: 청크가 된 설정되고 함수의 모든 쓰기
애플릿HTTP:send() 덩어리가 됩니다.

인수

· 애플릿 (class_AppletHTTP) -- 안 애플릿HTTP 수업

· name () -- 헤더 이름

· 가치 () -- 헤더 값

AppletHTTP.start_response(애플릿)
이 함수는 HTTP 엔진에 처리하고 보낼 수 있음을 나타냅니다.
응답 헤더. 이것이 호출된 후에는 응답에 헤더를 추가할 수 없습니다. 우리
사용할 수 없습니다 애플릿HTTP:send() 기능 애플릿HTTP:start_response() 하지 않습니다
전화했다.

인수

· 애플릿 (class_AppletHTTP) -- 안 애플릿HTTP 수업

AppletHTTP.getline(애플릿)
이 함수는 http 본문에서 한 줄을 포함하는 문자열을 반환합니다. 데이터가
반환된 것은 마지막 사용 가능한 데이터보다 가정된 최종 '\n'을 포함하지 않습니다.
스트림이 끝나기 전에.

인수

· 애플릿 (class_AppletHTTP) -- 안 애플릿HTTP 수업

반품
문자열. 스트림 끝에 도달하면 문자열이 비어 있을 수 있습니다.

AppletHTTP.receive(애플릿[, 크기])
지정된 읽기에 따라 HTTP 본문에서 데이터를 읽습니다. 크기. 경우 크기 is
없으면 함수는 끝까지 스트림의 모든 내용을 읽으려고 시도합니다. 만약에
전에, 크기 http 본문보다 크면 사용 가능한 데이터의 양을 반환합니다.

인수

· 애플릿 (class_AppletHTTP) -- 안 애플릿HTTP 수업

· 크기 (정수) -- 필요한 읽기 크기입니다.

반품
항상 문자열을 반환하고 연결이 닫히면 문자열이 비어 있을 수 있습니다.

AppletHTTP.send(애플릿, 메시지)
메시지 보내기 메시지 http 요청 본문에.

인수

· 애플릿 (class_AppletHTTP) -- 안 애플릿HTTP 수업

· 메시지 () -- 보낼 메시지.

수업 애플릿TCP()
이 클래스는 'tcp' 모드가 필요한 애플릿과 함께 사용됩니다. tcp 애플릿은 다음과 같을 수 있습니다.
에 등록 core.register_service() 기능. 그들은 처리에 사용됩니다
HAProxy 뒤에 있는 서버와 같은 tcp 스트림.

AppletTCP.c

반품
A 변환기 수업

이 속성에는 Converters 클래스 개체가 포함되어 있습니다.

AppletTCP.sc

반품
A 변환기 수업

이 속성에는 Converters 클래스 개체가 포함되어 있습니다. 이 객체의 기능
항상 문자열을 반환합니다.

애플릿TCP.f

반품
A 가져 오기 수업

이 속성에는 Fetches 클래스 개체가 포함되어 있습니다.

애플릿TCP.sf

반품
A 가져 오기 수업

이 속성에는 Fetches 클래스 개체가 포함되어 있습니다.

AppletTCP.getline(애플릿)
이 함수는 스트림에서 한 줄을 포함하는 문자열을 반환합니다. 데이터가
반환된 것은 마지막 사용 가능한 데이터보다 가정된 최종 '\n'을 포함하지 않습니다.
스트림이 끝나기 전에.

인수

· 애플릿 (class_AppletTCP) -- 안 애플릿TCP 수업

반품
문자열. 스트림 끝에 도달하면 문자열이 비어 있을 수 있습니다.

AppletTCP.receive(애플릿[, 크기])
지정된 읽기에 따라 TCP 스트림에서 데이터를 읽습니다. 크기. 경우 크기
이 없으면 함수는 끝까지 스트림의 모든 내용을 읽으려고 시도합니다.

인수

· 애플릿 (class_AppletTCP) -- 안 애플릿TCP 수업

· 크기 (정수) -- 필요한 읽기 크기입니다.

반품
항상 문자열을 반환하고 연결이 닫히면 문자열이 비어 있을 수 있습니다.

AppletTCP.send(appletmsg)
스트림에서 메시지를 보냅니다.

인수

· 애플릿 (class_AppletTCP) -- 안 애플릿TCP 수업

· 메시지 () -- 보낼 메시지.

많은 유용한 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:connect("127.0.0.1", 6379);

-- 이 새로운 소켓과 함께 redis 라이브러리를 사용합니다.
로컬 클라이언트 = redis.connect({socket=tcp});
클라이언트:핑();

end

오픈SSL:

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

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

onworks.net 서비스를 사용하여 온라인으로 haproxy-lua 사용


무료 서버 및 워크스테이션

Windows 및 Linux 앱 다운로드

  • 1
    통음
    통음
    SWIG는 소프트웨어 개발 도구입니다.
    C로 작성된 프로그램과
    다양한 고급 수준의 C++
    프로그래밍 언어. SWIG는 다음과 함께 사용됩니다.
    다른...
    SWIG 다운로드
  • 2
    WooCommerce Nextjs 반응 테마
    WooCommerce Nextjs 반응 테마
    React WooCommerce 테마,
    다음 JS, Webpack, Babel, Node 및
    GraphQL 및 Apollo를 사용한 Express
    고객. React의 WooCommerce 스토어(
    포함: 제품...
    WooCommerce Nextjs 반응 테마 다운로드
  • 3
    Archlabs_repo
    Archlabs_repo
    ArchLabs용 패키지 저장소 이것은
    가져올 수 있는 응용 프로그램

    https://sourceforge.net/projects/archlabs-repo/.
    그것은 OnWorks에서 호스팅되었습니다 ...
    archlabs_repo 다운로드
  • 4
    제퍼 프로젝트
    제퍼 프로젝트
    Zephyr 프로젝트는 새로운 세대입니다.
    실시간 운영체제(RTOS)
    여러 하드웨어 지원
    아키텍처. 그것은
    작은 크기의 커널...
    Zephyr 프로젝트 다운로드
  • 5
    SC콘
    SC콘
    SCons는 소프트웨어 구축 도구입니다.
    그것은에 대한 우수한 대안입니다
    고전적인 "만들기" 빌드 도구
    우리 모두는 알고 사랑합니다. 스콘은
    구현 ...
    SCons 다운로드
  • 6
    PSeInt
    PSeInt
    PSeInt는 의사 코드 해석기입니다.
    스페인어를 구사하는 프로그래밍 학생.
    주요 목적은 다음을 위한 도구가 되는 것입니다.
    기본을 배우고 이해하기
    개념...
    PSeInt 다운로드
  • 더»

Linux 명령

Ad