conditional expression

Kevin Jones kevin at nginx.com
Sun Mar 5 03:06:03 UTC 2017


 Hi,

You would be better to accomplish this with map. Would this work?

map $args $redirect {
    ~emailaddress=.+%40[a-zA-Z0-9\.\-]          '';
    default                                     "1";
}

server {
    ...
    location / {
        ...
    }

    location /foo {
        if ($redirect) { return 301 /; }
        ...
    }

}

On Sat, Mar 4, 2017 at 1:52 PM, 173279834462 <nginx-forum at forum.nginx.org>
wrote:

> Hello,
>
> Our local policy demands the rejection of any query; we do this as follows:
> if ($is_args) { return 301 /; }
>
> The introduction of Thunderbird autoconfiguration demands an exception to
> the above policy, because of
> "GET
> /.well-known/autoconfig/mail/config-v1.1.xml?emailaddre=uname%
> 40example.com".
>
> The resulting rule would be
>
> if (($is_args) && ($args !~ emailaddress=.+%40[a-zA-Z0-9\.\-]+)) { return
> 301 /; }
>
> The rule does not work, because nginx does not parse the AND condition.
>
> Of course, you cannot just remove $is_args, because $args is usually empty.
>
>
> The alternative would be if ($args ~ emailaddress=.+%40[a-zA-Z0-9\.\-]+))
> {
> allow all; } else { return 301 /; },
> but nginx does not parse if-then-else statements.
>
> Are we stuck in the cage?
>
> Posted at Nginx Forum: https://forum.nginx.org/read.p
> hp?2,272758,272758#msg-272758
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20170304/be0461b7/attachment-0001.html>


More information about the nginx mailing list