content_by_lua not reading/printing header values

vamshi nginx-forum at nginx.us
Tue Jun 24 08:24:55 UTC 2014


My nginx.conf 

    upstream testdb {
        postgres_server 10.0.9.43:9000 dbname=testdb user=postgres
password=postgres;
        postgres_keepalive max=100 mode=multi overflow=ignore;
    }

        location / {
            set $x "";

            content_by_lua '
                local a = ngx.var.http_cookie
                local b = ngx.var.http_my_custom_auth

                print(a)
                print(b)

                if ngx.var.http_my_custom_auth ~= nil then
                    local res = ngx.location.capture("/postgresquery",
                                                    { args = {x = b } }
                                                    )
                    print(res.status)
                    print(res.header)
                    print(res.body)
                    -- I would like to do more actions based on the result.
However, for now, we simply move ahead
                    return ngx.exec("@final")
                elseif ngx.var.http_cookie ~= nil then
                    return ngx.exec("@final")
                else
                    ngx.status = 444
                    return
                end
            ';
        }


        location @final {
            #
            # This is an internal location. Cannot be accessed from the
outside
            #

            internal;
            proxy_pass http://10.0.1.42;
        }

        location /postgresquery {
            internal;

            postgres_pass testdb;
            postgres_output text;
            postgres_escape $http_my_custom_auth;
            postgres_query "select id, name from testtable where key = $x";
        }



My error Log: 

2014/06/24 13:01:36 [debug] 6073#0: epoll add event: fd:7 op:1 ev:00002001
2014/06/24 13:01:38 [debug] 6073#0: post event 099D1620
2014/06/24 13:01:38 [debug] 6073#0: delete posted event 099D1620
2014/06/24 13:01:38 [debug] 6073#0: accept on 0.0.0.0:80, ready: 0
2014/06/24 13:01:38 [debug] 6073#0: posix_memalign: 099A8D40:256 @16
2014/06/24 13:01:38 [debug] 6073#0: *1 accept: 127.0.0.1:57731 fd:11
2014/06/24 13:01:38 [debug] 6073#0: *1 event timer add: 11:
60000:3435819925
2014/06/24 13:01:38 [debug] 6073#0: *1 reusable connection: 1
2014/06/24 13:01:38 [debug] 6073#0: *1 epoll add event: fd:11 op:1
ev:80002001
2014/06/24 13:01:38 [debug] 6073#0: *1 post event 099D1688
2014/06/24 13:01:38 [debug] 6073#0: *1 delete posted event 099D1688
2014/06/24 13:01:38 [debug] 6073#0: *1 http wait request handler
2014/06/24 13:01:38 [debug] 6073#0: *1 malloc: 0999FA50:1024
2014/06/24 13:01:38 [debug] 6073#0: *1 recv: fd:11 98 of 1024
2014/06/24 13:01:38 [debug] 6073#0: *1 reusable connection: 0
2014/06/24 13:01:38 [debug] 6073#0: *1 posix_memalign: 099A56D0:4096 @16
2014/06/24 13:01:38 [debug] 6073#0: *1 http process request line
2014/06/24 13:01:38 [debug] 6073#0: *1 http request line: "HEAD / HTTP/1.1"
2014/06/24 13:01:38 [debug] 6073#0: *1 http uri: "/"
2014/06/24 13:01:38 [debug] 6073#0: *1 http args: ""
2014/06/24 13:01:38 [debug] 6073#0: *1 http exten: ""
2014/06/24 13:01:38 [debug] 6073#0: *1 http process request header line
2014/06/24 13:01:38 [debug] 6073#0: *1 http header: "User-Agent:
curl/7.32.0"
2014/06/24 13:01:38 [debug] 6073#0: *1 http header: "Host: 127.0.0.1"
2014/06/24 13:01:38 [debug] 6073#0: *1 http header: "Accept: */*"
2014/06/24 13:01:38 [debug] 6073#0: *1 http header: "my-custom-auth:
Vamshi"
2014/06/24 13:01:38 [debug] 6073#0: *1 http header done
2014/06/24 13:01:38 [debug] 6073#0: *1 event timer del: 11: 3435819925
2014/06/24 13:01:38 [debug] 6073#0: *1 rewrite phase: 0
2014/06/24 13:01:38 [debug] 6073#0: *1 test location: "/"
2014/06/24 13:01:38 [debug] 6073#0: *1 using configuration "/"
2014/06/24 13:01:38 [debug] 6073#0: *1 http cl:-1 max:1048576
2014/06/24 13:01:38 [debug] 6073#0: *1 rewrite phase: 2
2014/06/24 13:01:38 [debug] 6073#0: *1 http script value: ""
2014/06/24 13:01:38 [debug] 6073#0: *1 http script set $x
2014/06/24 13:01:38 [debug] 6073#0: *1 post rewrite phase: 3
2014/06/24 13:01:38 [debug] 6073#0: *1 generic phase: 4
2014/06/24 13:01:38 [debug] 6073#0: *1 generic phase: 5
2014/06/24 13:01:38 [debug] 6073#0: *1 access phase: 6
2014/06/24 13:01:38 [debug] 6073#0: *1 access phase: 7
2014/06/24 13:01:38 [debug] 6073#0: *1 post access phase: 8
2014/06/24 13:01:38 [debug] 6073#0: *1 lua content handler, uri:"/" c:1
2014/06/24 13:01:38 [debug] 6073#0: *1 lua reset ctx
2014/06/24 13:01:38 [debug] 6073#0: *1 lua creating new thread
2014/06/24 13:01:38 [debug] 6073#0: *1 http cleanup add: 099A5FAC
2014/06/24 13:01:38 [debug] 6073#0: *1 lua run thread, top:0 c:1
2014/06/24 13:01:38 [debug] 6074#0: epoll add event: fd:7 op:1 ev:00002001

Curl output:

[vamshi at localhost ~]$ curl -I -H "my-custom-auth: Vamshi" http://127.0.0.1
curl: (52) Empty reply from server

Postgres Table (on a different machine):
1 Row
ID : 1
Name : Vamshi Krishna Ramaka
Key: Vamshi

I know that code 444 is being returned, because lua seems to find the cookie
and my header as empty. Can you tell me why Lus thinks they are empty ? The
current config is not production quality since this is my first attempt at
nginx as well as Lua. I have almost removed everything else is trying to
catch this bug, and this is where I have landed. So do excuse me if there
are any glaringly obvious errors.

-Vamshi

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



More information about the nginx mailing list