auth_request_set into variable and lua

agentzh agentzh at gmail.com
Wed Dec 5 02:19:02 UTC 2012


Hello!

On Tue, Dec 4, 2012 at 2:18 PM, djczaski wrote:
> Trying to get a header from an auth_request into a variable and use it from
> Lua with no luck.  This was the simple example I tried.
>

You're making several mistakes. See the discussion below:

>       location = /auth {
>            add_header    X-Boo    "Hello World";

Mistake #1: The add_header directive from the standard ngx_headers
module has no effect on subrequests while your location /auth here is
accessed by a subrequest issued via the auth_request directive.

>            return 204;
>         }
>
>         location /test {
>             auth_request /auth;
>             auth_request_set $test $upstream_http_x_boo;

Mistake #2: The $upstream_http_XXX variables are only meaningful when
the *current* location is configured by one of those Nginx upstream
modules like ngx_proxy, ngx_fastcgi, ngx_uwsgi, and etc. Here your
current location, location /test, is not configured by any Nginx
upstream modules (neither ngx_auth_request nor ngx_lua are upstream
modules).

Mistake #3: The $upstream_http_XXX variables are only in effect for
the current request. It won't inherit values from any other requests
including subrequests.

>             add_header X-BooHoo $test;
>
>             content_by_lua '
>                 ngx.say("(" .. ngx.var.test .. ")")
>             ';
>         }
>

BTW, I'm not sure what business requirements you're trying to achieve
here but I think you can just use access_by_lua with
ngx.location.capture here in place of auth_request and you can inspect
the subrequest's response headers easily in Lua.

Best regards,
-agentzh



More information about the nginx mailing list