线上总会是不是发现500请求,原因是发现了这样类似的请求:/xxx/yyy/zzz/?aaa=111&bbb=222&ccc
错误原因:
在nginx中使用lua对几个参数进行非空校验,其中函数是:
--检查字符串是否为空或nil,为空或nil时,返回true
function _M.is_empty_str(self,value)
return value == nil or string.len(value) == 0
end
其中错误信息是:
bad argument #1 to 'len' (string expected, got boolean)
意思是,从url中获取的参数,ccc是个boolean值,而非字符串。
解决办法:
在len函数调用前,对ccc类型进行判断:
... or type(value) ~= string or len(value)