OpenResty
Логирование и отладка
- Отключение луа кеша, чтобы изменения применялись мгновенно
lua_code_cache off; docker compose exec nginx -s reloadпри обновлении .conf или .lua файлов (если кеш включен)tail -fn 100 /path_to/error.log- Стандартный уровень логгинга в рести принтит
ngx.STDERR ngx.EMERG ngx.ALERT ngx.CRIT ngx.ERR, аngx.WARN ngx.NOTICE ngx.INFO ngx.DEBUGнет. Как мне мне, то лучше для error.log делать level warn, ибо ниже там флуд и говно
Notes
Ссылка по частям
Тут не хватает ngx.var.args и мб ngx.req.get_uri_args(). Еще с args
local full_url = ngx.var.scheme.."://"..ngx.var.http_host..ngx.var.request_uri
if ngx.var.query_string ~= nil then
full_url = full_url.."?"..ngx.var.query_string
end
ngx.say(full_url)
Функции времени
Есть еще. Ниже ссылка на extra TIME locations
os.time() == ngx.time() == 1678064879
ngx.today() == "2023-03-06"
ngx.localtime() == "2023-03-06 01:07:59"
ngx.now() == 1678064879.458
Ссылки
-
Объяснения server и location в Nginx - Приоритет выбора, регулярки, примеры
-
SSL Configuration Generator - генерация базового конфига с cipher
-
Добавление хедера.
header_filter_by_lua_block -
Выполнение запроса к хосту и /healthcheck.
access_by_lua_blockТеги:http.new(),:request_uri(,ngx.status,ngx.HTTP_SERVICE_UNAVAILABLE,ngx.exit -
Пушит метрики в Prometheus.
content_by_lua,log_by_lua_block,init_worker_by_lua_blockТеги:opm get knyar/nginx-lua-prometheus -
Логирование body запроса и ответа.
lua_need_request_body,body_filter_by_lua -
Объединение 2 запросов.
content_by_lua_blockТеги:ngx.req.read_body(),ngx.req.get_body_data(),ngx.HTTP_GET,init_by_lua(оптимизация загрузки cjson),ngx.location.capture_multi(reqs) -
extra TIME locations. Респонсы не смотрел Теги:
ngx.time(),ngx.today(),ngx.http_time( ngx.now() ),ngx.cookie_time( ngx.now() ),ngx.utctime(),ngx.localtime(),ngx.now() -
Переиспользование redis соединения. set_keepalive использовать вместо close. Теги:
red:set_keepalive(),red:get_reused_times()
