Lua recipes
Lua scripts define on_request and/or on_response hooks. Return a modified table to continue, return nil to pass through unchanged, or return a response table from on_request to short-circuit the upstream request.
Add a request header
function on_request(request)
request.headers["X-Proxied-By"] = "proxelar"
return request
end
Remove cookies
function on_request(request)
request.headers["cookie"] = nil
return request
end
Add CORS response headers
function on_response(request, response)
response.headers["Access-Control-Allow-Origin"] = "*"
response.headers["Access-Control-Allow-Methods"] = "GET, POST, PUT, DELETE, OPTIONS"
response.headers["Access-Control-Allow-Headers"] = "Content-Type, Authorization"
return response
end
Block a domain
local blocked = { "ads%.example%.com", "tracker%.example%.com" }
function on_request(request)
for _, pattern in ipairs(blocked) do
if string.find(request.url, pattern) then
return {
status = 403,
headers = { ["Content-Type"] = "text/plain" },
body = "Blocked by Proxelar",
}
end
end
end
Modify a JSON response
function on_response(request, response)
local ct = response.headers["content-type"] or ""
if not string.find(ct, "application/json") then return end
if string.sub(response.body, 1, 1) == "{" then
response.body = '{"proxied":true,' .. string.sub(response.body, 2)
end
return response
end
Use the checked-in examples
The repository includes complete scripts in examples/scripts/:
add_header.luaauth_inject.luablock_domain.luafilter_by_method.luainject_cors.lualog_traffic.luamock_api.luamodify_json_response.luaredirect.luarequest_body_modify.luarewrite_html.luastrip_cookies.lua
See the Lua API reference for all fields and return values.