KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
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: http { log_format mylogfmt '$remote_addr - $remote_user [$time_local] \ "$request" $status $body_bytes_sent "$http_referer" \ "$http_user_agent" "$foo"' } location / { proxy_pass http://remote-server.example.com/; proxy_set_header X-Real-IP $remote_addr; proxy_connect_timeout 150; proxy_send_timeout 100; proxy_read_timeout 100; proxy_buffers 4 32k; client_max_body_size 8m; client_body_buffer_size 128k; rewrite_by_lua ' cjson = require "cjson" ngx.req.read_body() body_table = cjson.decode(ngx.var.request_body) ngx.var.foo = body_table["foo"] '; access_log /var/log/nginx/access.log mylogfmt; } However, nginx won't start with this configuration. It complains thusly: danslimmon@whatever:~$ sudo /etc/init.d/nginx reload Reloading nginx configuration: nginx: [emerg] unknown "foo" variable nginx: configuration file /etc/nginx/nginx.conf test failed I tried adding a 'set $foo "-"' to the location, but that just seems to override what I'm doing in Lua. Thoughts? My nginx -V output
Tags (comma-separated)
Save Edits
Cancel