env HOSTNAME; env NODE_NAME; env POD_NAME; env POD_NAMESPACE; env POD_IP; events { worker_connections 1024; } http { default_type 'text/plain'; client_max_body_size 0; init_by_lua_block { local template = require "resty.template" tmpl = template.compile([[ Hostname: {*os.getenv("HOSTNAME") or "N/A"*} Pod Information: {% if os.getenv("POD_NAME") then %} node name: {*os.getenv("NODE_NAME") or "N/A"*} pod name: {*os.getenv("POD_NAME") or "N/A"*} pod namespace: {*os.getenv("POD_NAMESPACE") or "N/A"*} pod IP: {*os.getenv("POD_IP") or "N/A"*} {% else %} -no pod information available- {% end %} Server values: server_version=nginx: {*ngx.var.nginx_version*} - lua: {*ngx.config.ngx_lua_version*} Request Information: client_address={*ngx.var.remote_addr*} method={*ngx.req.get_method()*} real path={*ngx.var.request_uri*} query={*ngx.var.query_string or ""*} request_version={*ngx.req.http_version()*} request_scheme={*ngx.var.scheme*} request_uri={*ngx.var.scheme.."://"..ngx.var.host..":"..ngx.var.server_port..ngx.var.request_uri*} Request Headers: {% for i, key in ipairs(keys) do %} {% local val = headers[key] %} {% if type(val) == "table" then %} {% for i = 1,#val do %} {*key*}={*val[i]*} {% end %} {% else %} {*key*}={*val*} {% end %} {% end %} Request Body: {*ngx.var.request_body or " -no body in request-"*} ]]) } server { listen 80 default_server reuseport; server_name _; keepalive_timeout 620s; location / { lua_need_request_body on; header_filter_by_lua_block { if ngx.var.arg_hsts == "true" then ngx.header["Strict-Transport-Security"] = "max-age=3600; preload" end } content_by_lua_block { ngx.header["Server"] = "echoserver" local headers = ngx.req.get_headers() local keys = {} for key, val in pairs(headers) do table.insert(keys, key) end table.sort(keys) ngx.say(tmpl({os=os, ngx=ngx, keys=keys, headers=headers})) } } } }