Nginx multiple upstream map conditions

c0nw0nk nginx-forum at forum.nginx.org
Wed Aug 31 17:42:39 UTC 2016


Valentin V. Bartenev Wrote:
-------------------------------------------------------
> On Tuesday 30 August 2016 14:25:28 c0nw0nk wrote:
> > So this is a fun one.
> > 
> > As allot of people probably already know you can't use "IF" on
> upstream
> > values since if conditions are executed before any "$upstream_"
> conditions.
> > 
> > But with a map directive it might just be possible to combine 2
> upstream
> > maps together and have a output based on the conditions matched.
> > 
> > Here is what I am trying to achieve.
> > 
> > If the upstream returns with a logged_in value of 1 then we forward
> and pass
> > the Set-Cookie header to the client "add_header".
> > Else the "add_header Set-Cookie" should be empty.
> > 
> > ##logged in value 0 = guest
> > ##logged in value 1 = has an account
> > map $upstream_cookie_logged_in $upstream_logged_in_value {
> > default $upstream_cookie_logged_in;
> > }
> > 
> > map $upstream_http_set_cookie $upstream_md5_value {
> > default $upstream_http_set_cookie;
> > }
> > 
> > 
> > add_header Set-Cookie $upstream_md5_value; ##Only want to send the
> MD5
> > cookie when the logged in value is 1
> > 
> > 
> > fastcgi_hide_header Set-Cookie; ##Removed the set-cookie and to be
> added in
> > only when conditions are met. "add_header"
> > 
> > 
> > Thanks in advance to anyone who can help me out :D
> > 
> [..]
> 
> map $upstream_cookie_logged_in $upstream_md5_value {
>     1  $upstream_http_set_cookie;
> }
> 
> add_header Set-Cookie $upstream_md5_value;
> 
>   wbr, Valentin V. Bartenev
> 
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx


Thanks works a treat is it possible or allowed to do the following in a
nginx upstream map ? and if so how i can't figure it out.


I cache with the following key.
fastcgi_cache_key
"$session_id_value$scheme$host$request_uri$request_method";


if the upstream_cookie_logged_in value is not equal to 1 how can I set
$session_id_value ''; make empty

Posted at Nginx Forum: https://forum.nginx.org/read.php?2,269296,269321#msg-269321



More information about the nginx mailing list