在nginx上使用lua筛选代理\u pass上的请求
我想先过滤流媒体url,然后再使用带有lua的nginx的proxy_pass访问流媒体服务器 我的流媒体服务器是 我想知道什么时候可以访问它。如果您访问它,将显示“拒绝权限”页面 这是我在nginx配置文件中的代码:在nginx上使用lua筛选代理\u pass上的请求,nginx,lua,Nginx,Lua,我想先过滤流媒体url,然后再使用带有lua的nginx的proxy_pass访问流媒体服务器 我的流媒体服务器是 我想知道什么时候可以访问它。如果您访问它,将显示“拒绝权限”页面 这是我在nginx配置文件中的代码: location ^~ /stream { set $flag_false "false"; set $flag "false"; set $flag_true 1; rewrit
location ^~ /stream {
set $flag_false "false";
set $flag "false";
set $flag_true 1;
rewrite_by_lua '
local token = ngx.var.arg_token
if token == "mytoken" then
ngx.var.flag = ngx.var.flag_true
end
';
# rewrite_by_lua "ngx.var.flag = ngx.var.flag_true";
if ($flag = $flag_true) {
proxy_pass http://x.x.x.x:8092;
break;
}
echo "You do not have permission: $flag";
}
但是,当我用url请求时,它并没有传递到我的流媒体,而是显示“您没有权限:1”。显然,它将标志值更改为1,但不会传递到我的流。
我怎么了?。请帮帮我
if
和set
指令)运行。您可以改为使用指令if(condition){}
语句的“=”和“!=”运算符将变量与字符串进行比较,这意味着if条件的$flag\u true
将不会计算为1
location ^~ /stream {
set $flag_true 1;
set_by_lua $flag '
local token = ngx.var.arg_token
if token == "mytoken" then
return ngx.var.flag_true
end
return "false"
';
if ($flag = 1) {
proxy_pass http://x.x.x.x:8092;
break;
}
echo "You do not have permission: $flag";
}
我有什么问题?。是吗?。因为if(condition){}语句在check-token语句之前执行?@SơnL–m,是的,
if(condition){}
语句在check-token语句之前执行(rewrite_by_-lua
)。