local url
do
url = applet.path
if applet.qs ~= '' then
url = url .. "?" .. applet.qs
end
end
local upstream = "http://" .. host .. url
local httputil = util.HttpUtil()
local resStr, res, code, t, response_headers
local request_headers do
request_headers = {}
local h = applet.headers
for k, v in pairs(h) do
local header_string = ''
for idx, header_v in pairs(v) do
if idx > 0 then
header_string = header_string .. ", " .. header_v
else
header_string = header_v
end
end
request_headers[k] = header_string
end
request_headers['accept-encoding'] = nil
end
if method == "GET" then
local query_string do
if string.find(upstream, '?', 1, true) == nil then
_, query_string = util.split(upstream, "?")
end
end
res, code, response_headers, t = httputil.httpGet(upstream,
request_headers, query_string)
else
local body do
if request_headers["content-length"] ~= '0' then
body = service.get_body(applet)
else
body = ''
end
end
res, code, response_headers, t = httputil.httpBase(method,
upstream, request_headers, body)
end
if res == 1 then
resStr = t
else
resStr = res or ''
end
if response_headers then
for k, v in pairs(response_headers) do
-- refactor: set-cookie value is table
if k == "set-cookie" then
for _, val in pairs(v) do
applet:add_header(k, val)
end
else
applet:add_header(k, v)
end
end
end
applet:set_status(code)
applet:start_response()
applet:send(resStr)
Hi,
What do you mean exactly by blocking, blocked from doing what ?
The use-service will make HAProxy use the LUA script instead of a
backend server when "proxying" the request.
++
On 24/10/2017 10:38, aogooc xu wrote:
> hello,
>
> I would like to achieve a register in the register_service mini http
> proxy, dynamic processing request
>
> * problem
>
> Use luasocket in lua code,will cause blocking ?
>
> Test 10 concurrent requests,example
>
> ab -c 10 -n 1000 http://127.0.0.1/test/
>
> It will block and wait for all requests to be completed, I am confused。
>
>
> haproxy cfg exmaple:
>
> http-request use-service lua.haproxy-proxy
>
>
>
>
>
--
Moemen MHEDHBI