формат журнала Nginx является:Могу ли я модифицировать встроенную переменную Nginx с помощью Lua?
log_format main '$remote_addr [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$cookie_logintoken"';
Я установил log_by_lua_file
log_by_lua_file xxxxx/ngx_lua_waf/log.lua;
и содержание log.lua:
ngx.req.set_header("User-Agent", "this is testing User-Agent")
ngx.req.set_header("Referer", "this is testing Referer")
и access.log изменение
127.0.0.1 [17/Dec/2016:16:21:47 +0800] "GET /test/client.php HTTP/1.1" 200 1370 "this is testing Referer" "this is testing User-Agent" "-" "-"
Как я могу изменить встроенный var nginx как $ request? Я хочу, чтобы изменить "GET /test/client.php HTTP/1.1", прежде чем войти в Nginx access.log
ngx.var.request = "хххх" будет ошибка:
failed to run log_by_lua*: xxxx/ngx_lua_waf/log.lua:15: variable "request" not changeable
но Я не знаю, как это изменить с помощью ngx.req.set_header
может ли кто-нибудь сказать мне, как его изменить?
кажется единственным способом сделать – weizhao
это стоит отметить, что 'set' не действует в' htt'p контекста, вы должны использовать его в другом месте (например место). Поскольку 'log_by_lua_block' работает в фазе журнала nginx, везде, где вы используете set to define variable, должно работать. nit: нет ';' после log_by_lua_block. – cuongnv23