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
Ссылки
-
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()