当且仅当设置了变量时,如何使用 nginx 重写参数?

当且仅当设置了变量时,如何使用 nginx 重写参数?

我无法嵌套 if,并且没有可与 if 一起使用的 and 运算符,那么如何取消嵌套呢:

if ($AUTHENTICATED) {
    proxy_pass http://backend;
{
if (!$AUTHENTICATED) {
    if ($args ~ out=xml) {
        rewrite (.*)$ $1.xml break;
    }
    if ($args ~ out=csv) {
        rewrite (.*)$ $1.csv break;
    }
 }

答案1

if ($AUTHENTICATED) {
    proxy_pass http://backend;
    break;
}

if ($arg_out = xml) {
    rewrite ^ $uri.xml break;
}

if ($arg_out = csv) {
    rewrite ^ $uri.csv break;
}

但请注意:http://wiki.nginx.org/IfIsEvil

相关内容