Input Headers. - headers_more_module.
agentzh
agentzh at gmail.com
Thu Aug 30 21:30:35 UTC 2012
Hello!
On Thu, Aug 30, 2012 at 1:12 PM, David | StyleFlare
<david at styleflare.com> wrote:
> Thank You
>
> So this worked.
>
Cool :)
> The question is then if I am setting a value in /auth
>
> When does it get actually set?
>
> postgres_set $pg_server 0 0 required;
>
> Then in my location block;
> I do
>
> more_set_input_headers 'X-Server-ID: $pg_server';
>
> When is $pg_server actually set?
>
Are you using the ngx_http_auth_request module? The auth_request
directive runs at the access phase. The order of running phases in
nginx for any nginx locations always looks like this:
rewrite phase (set, rewrite, more_set_input_headers, rewrite_by_lua, etc)
access phase (auth_request, allow, deny, access_by_lua, etc)
content phase (proxy_pass, postgres_pass, uwsgi_pass, content_by_lua, etc)
log phase (log_by_lua, etc)
A solution is to use the ngx_lua module's access_by_lua module to
replace both auth_request and more_set_input_headers, as in
location / {
access_by_lua '
local res = ngx.location.capture("/auth")
if res.status == 200 then
ngx.req.set_header("X-Server-ID", res.var.pg_server)
end
';
uwsgi_pass ...;
}
location = /auth {
internal;
postgres_query "...";
postgres_pass ...;
postgres_set $pg_server ...;
}
You can check out the ngx_lua's documentation for more details:
http://wiki.nginx.org/HttpLuaModule
Best regards,
-agentzh
More information about the nginx
mailing list