나는 Lua API를 사용하여 HAproxy
내부에서 실행될 lua 스크립트를 작성하고 있습니다.luarocks를 통해 설치된 타사 lua 라이브러리를 haproxy로로드하는 방법
내 스크립트는 내 컴퓨터에 설치하려는 socket
패키지를 사용하고 있습니다.
현재 나는 고정 표시기 내에서 실행하고있어 내 dockerfile은 다음과 같습니다
FROM haproxy:1.7
RUN apt-get update -y && apt-get install curl luarocks -y
RUN luarocks install luasocket
EXPOSE 80 9000
COPY 500error.json.http /etc/haproxy/errorfiles/
COPY hello_world.lua /etc/haproxy/scripts/
내 스크립트가 다음 줄이 :
local http = require('socket.http')
루아 인터프리터를 실행할 때 괜찮 작동
하지만 실행시 haproxy :
[ALERT] 298/104833 (8) : parsing [/usr/local/etc/haproxy/haproxy.cfg:5] : lua runtime error: /etc/haproxy/scripts/hello_world.lua:1: module 'socket.http' not found:
올바르게 haproxy로로드해야합니까?
이것은 오류의 원인은 아니지만, 차단 작업을 수행하는 경우 HAProxy와 함께 'socket.http'를 사용할 수 없다는 것을 발견 할 수 있습니다. HAProxy를 사용하여 집중적 인 루아 프로그래밍을 한 지 오래되었지만 HAProxy의 루아 소켓 기능을 사용하여 코드에서 생성 된 원시 HTTP 요청을 보내고 regexes를 사용하여 응답을 구문 분석하여 원격 HTTP 요청을 "손으로"수행하는 것을 기억합니다 , 비동기 DNS 기능이 없기 때문에 하드 코딩 된 IP 주소를 사용해야했습니다. YMMV. –