Input Headers. - headers_more_module.

agentzh agentzh at
Fri Aug 31 18:15:12 UTC 2012


On Fri, Aug 31, 2012 at 9:12 AM, David | StyleFlare
<david at> wrote:
> Strangely
> I still dont see the header variable set.
> I installed nginx-lua and I added the snippet you sent me to the nginx
> config.

Sorry, ngx.location.capture disables nginx variable sharing between
subrequests and their parent by default (for safety reasons). You need
to explicitly allow that for your variable:

    ngx.location.capture("/auth", { share_all_vars = true })

See the official documentation of ngx_lua for more details:

But it's highly recommended to use the response body and/or headers
(instead of nginx variables) to return data from the subrequest back
to its parent, for example:

    location / {
        access_by_lua '
            local res = ngx.location.capture("/auth")
            if res.status == 200 and res.body then
                ngx.req.set_header("X-Server-ID", res.body)

        uwsgi_pass ...;

    location = /auth {
        postgres_query "select server_id from ...";
        postgres_pass backend;
        postgres_output  value 0 0;

That is, we use the postgres_output directive instead of postgres_set
in location /auth here so that the server ID data will be returned as
the subrequest's response body.

Best regards,

More information about the nginx mailing list