|
@@ -16,6 +16,7 @@ local byte = string.byte
|
|
|
local char = string.char
|
|
|
local fmt = string.format
|
|
|
local sub = string.sub
|
|
|
+local concat = table.concat
|
|
|
|
|
|
local ngx = ngx
|
|
|
local nlog = ngx.log
|
|
@@ -88,6 +89,13 @@ local function get_remote_addr(remote_addr_var, remote_addr_idx)
|
|
|
return addr or ngx_var.remote_addr
|
|
|
end
|
|
|
|
|
|
+local function parse_v(v)
|
|
|
+ if type(v) == "table" then
|
|
|
+ return concat(v, ", ")
|
|
|
+ end
|
|
|
+ return tostring(v)
|
|
|
+end
|
|
|
+
|
|
|
local function build_header()
|
|
|
local http_version = ngx_req.http_version()
|
|
|
if http_version < 2.0 then
|
|
@@ -101,13 +109,10 @@ local function build_header()
|
|
|
end
|
|
|
|
|
|
local buf = buffer:new()
|
|
|
- buf:add(ngx_req.get_method())
|
|
|
- buf:add(" ")
|
|
|
- buf:add(ngx_var.request_uri)
|
|
|
- buf:add(fmt(" HTTP/%.1f\r\n", http_version))
|
|
|
+ buf:add(fmt("%s %s HTTP/%.1f\r\n", ngx_req.get_method(), ngx_var.request_uri, http_version))
|
|
|
|
|
|
for k, v in pairs(headers) do
|
|
|
- buf:add(k .. ": " .. v .. "\r\n")
|
|
|
+ buf:add(fmt("%s: %s\r\n", k, parse_v(v)))
|
|
|
end
|
|
|
buf:add("\r\n")
|
|
|
|