Nginx multiple upstream map conditions

c0nw0nk nginx-forum at forum.nginx.org
Tue Aug 30 18:25:28 UTC 2016


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

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



More information about the nginx mailing list