env HOSTNAME;
env NODE_NAME;
env POD_NAME;
env POD_NAMESPACE;
env POD_IP;

daemon off;

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}))
			}
		}
	}
}
