Logging a variable set by nginx's Lua module


#1

I am trying to use the Lua module in nginx to set a variable (“foo”)
based
on JSON in the body of a request. Then I want to log the value of that
variable to the access log.

Like so: https://gist.github.com/danslimmon/17f5bf4736566737cc65

However, nginx won’t start with this configuration. It complains thusly:
https://gist.github.com/danslimmon/f5f789d8af8bbb06b224

Here is my “nginx -V” output:
https://gist.github.com/danslimmon/9ed99c63aa6c04bd1a41/raw/e73bbdfb1c0ead08dd4df80b936dc233542df8bc/gistfile1.txt

Thoughts? Thanks in advance.

Posted at Nginx Forum:
http://forum.nginx.org/read.php?2,240917,240917#msg-240917


#2

On Tue, 16 Jul 2013 11:26:29 -0400
“danslimmon” removed_email_address@domain.invalid wrote:

However, nginx won’t start with this configuration. It complains
thusly: https://gist.github.com/danslimmon/f5f789d8af8bbb06b224

http://wiki.nginx.org/HttpLuaModule#ngx.var.VARIABLE

“Note that only already defined nginx variables can be written to.”
Look at example how to do that.

Marcin


#3

Thanks for the reply.

My first thought was to put a “set foo ‘-’” in the config, but when I
use
this pared-down example that emulates the documentation except to
replace
“content_by_lua” with “rewrite_by_lua”:

https://gist.github.com/danslimmon/1ba367780f0efdd2afc5

I get “-” in the logs instead of “bar”. Is it the “content”/“rewrite”
difference?

Posted at Nginx Forum:
http://forum.nginx.org/read.php?2,240917,240920#msg-240920


#4

On Tue, 16 Jul 2013 12:22:19 -0400
“danslimmon” removed_email_address@domain.invalid wrote:

Thanks for the reply.

My first thought was to put a “set foo ‘-’” in the config, but when I
use this pared-down example that emulates the documentation except to
replace “content_by_lua” with “rewrite_by_lua”:

https://gist.github.com/danslimmon/1ba367780f0efdd2afc5

I get “-” in the logs instead of “bar”. Is it the “content”/“rewrite”
difference?

Shouldn’t be and works for me (nginx 1.2.8) I noticed that your
example cannot work as you missed semicolon after at the end of line
with set (I get syntax error).

Marcin