Weird behavior when checking the existence of a cookie

Hi list, this is my first post here, so If I commit any blunder please
let
me know.

I have this location block:

location /some_path/ {
# this sets the mobile_rewrite variable based on a regex against
the user_agent
include /etc/nginx/mobile;

    # This is where the trouble lies. =/
    if ($cookie_mobileBypassDaily = yes_please) {
        set $mobile_rewrite do_not_perform;
    }

    if ($mobile_rewrite = perform) {
        return 302 

$scheme://my.site.com/some_path/fallback_mobile.html;
break;
}
# upstream/ to remove the /some_path/ part of the uri
proxy_pass http://upstream/;
}

And now to the trouble at hand: if there is no cookie the proxy_pass is
executed rightly (ie. http://my.server.com/some_path/thing =>
http://upstream/thing). If the cookie exists the proxy_pass not only has
the some_path part of the url but it also has an extraneous slash (ie.
http://my.server.com/some_path/thing =>
http://upstream//some_path/thing).

Why is this happening? What I’m doing wrong besides, maybe, everything?
=)

Thanks for the help

Marcello Rocha
Pesquisa & Desenvolvimento

(11) 4084.1111 ou (xx) 4007.1547 [image: VAGAS] http://bit.ly/1jbOuhG

By default the $uri is appended to the proxy_pass directive.
Since you defined as
proxy_pass http://upstream*/*;
and the $uri starts with a slash you will have a double slash.

Try to set proxy_pass like
proxy_pass http://upstream;

On Fri, Sep 26, 2014 at 2:02 PM, Marcello Rocha
<[email protected]

On Fri, Sep 26, 2014 at 02:02:12PM -0300, Marcello Rocha wrote:

Hi there,

    }

This is an “if” inside a “location” which does something other than
“return” or “rewrite…last”.

Generally, that’s a thing to avoid.

Can you move those three lines outside of the “location” block?

Actually: I suspect that the included file also does “if”, so you may
want to move that outside of the “location” block too.

From your description, they both do not depend on the particular
request,
so it may be ok to have them both at server{} level (and applying to
all requests).

f

Francis D. [email protected]