我想在使用lgin的proxy_pass与lua
之前将流式网址过滤到流媒体服务器我的流媒体服务器是http://localhost:8092
我希望在访问http://localhost:8080/streami1?token=mytoken时,它会转发到http://localhost:8092/stream1。如果您访问http://localhost:8080/streaming1?token=abc,则会显示权限拒绝页面。
这是我在nginx配置文件中的代码:
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请求http://localhost:8080/streaming1?token=mytoken时,它没有传递到我的流媒体信息中显示“你没有权限:1”。显然,它将标志值更改为1,但它不会传递给我的流式传输。 我错了什么?请帮帮我?
答案 0 :(得分:1)
if
和set
指令之后运行。您可以改用set_by_lua指令。if (condition) {}
语句的“=”和“!=”运算符将变量与一个字符串进行比较,这意味着if-condition的$flag_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";
}