nginx如何判断变量为空呢?

问题描述

因为要重写请求,旧版本的是利用body中一个action参数来执行不同的代码的,我的打算是用openResty.
把问题最小化还原一下,利用location

location ~ ^/oldpath/interface.php {
    set $target '';
    access_by_lua_file /var/www/script.lua;

    if ($target != '') { # $target有值却没有执行
        proxy_pass https://$target;
    }
}

测试了一下,$targe变量确实已经设置了(用echo输出验证了一下),不过if判断有问题,明明有值,却没有执行if中片段。

阅读 16k
4 个回答

那试试下面这种?

 if ($target) {
    proxy_pass https://$target;
}
    
或
    
 if ($target !~ '') {
    proxy_pass https://$target;
}

set $myhost ""; 然后在access_by_lua_file里面修改myhost

最后proxy_pass https://$myhost

我现在的做法是:设置了一个默认值,用来区分

set $target 'old';
access_by_lua_file /var/www/script.lua;
if ($target = 'old') {
    proxy_pass http://backend;
}
proxy_pass http://$target;
新手上路,请多包涵

if ( $target ~* '^$') {
}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题