Logging a variable set by nginx's Lua module

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: gist:17f5bf4736566737cc65 · GitHub

However, nginx won’t start with this configuration. It complains thusly:

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

Thoughts? Thanks in advance.

Posted at Nginx Forum:

On Tue, 16 Jul 2013 11:26:29 -0400
“danslimmon” [email protected] wrote:

However, nginx won’t start with this configuration. It complains
thusly: gist:f5f789d8af8bbb06b224 · GitHub

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

Marcin

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”:

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

Posted at Nginx Forum:

On Tue, 16 Jul 2013 12:22:19 -0400
“danslimmon” [email protected] 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”:

gist:1ba367780f0efdd2afc5 · GitHub

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