H5W3
当前位置:H5W3 > 其他技术问题 > 正文

【nginx】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中片段。

回答

那试试下面这种?

 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 ~* ‘^$’) {
}

本文地址:H5W3 » 【nginx】nginx如何判断变量为空呢?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址