Nginx-随机变量(同步服务器端和客户端)

时间:2020-08-05 18:14:01

标签: variables nginx random lua openresty

早上好,我正在尝试保护文件,为此,我有一个自定义的nginx模块,在该模块上,我可以在JavaScript / HTML文件(ClientSide)上加载nginx变量(ServerSide)。

因此,我可以在nginx上创建HTML或Javascript文件,这是一个打开文件的功能,下面我举一个小巧的示例:

在nginx上:

set $teste thisisatest;

在HTML文件上:

<script>src = "/file_to_protect.js?d=$teste;</script>

因此,我在HTML上创建了一个小函数以使用nginx变量打开文件,然后如果请求uri与该变量不匹配,则我在nginx上进行了设置,用户得到403,效果很好

我可以调用$teste变量,它将选择服务器端变量,并且很好。

我的问题是:如何在服务器端设置随机变量并在客户端同步?

让我们说我用lua设置了一个随机变量

set_by_lua_block $teste { return string.format('%03d', math.random(1, 999)) }

所以我要在变量$teste中保存一个随机数,现在,当我们在浏览器中打开HTML代码时,它将用随机变量替换$teste,它很好确实会替换,这里的问题是它无法加载文件,因为当我设置随机变量时,它在服务器端和客户端会有所不同,让我再举一个例子:

在nginx上:

set_by_lua_block $teste { return string.format('%03d', math.random(1, 999)) }

if ($request_uri ~* "[?&]d=([^&]*)") { set $d $1; }
if ($d != $teste) {
set $fileblock 1;
}

在HTML文件上:

<script>src = "/file_to_protect.js?d=$teste;</script>

if ($d != $teste)将不会与src = "/file_to_protect.js?d=$teste;同步,例如:if ($d != 4365) src = "/file_to_protect.js?d=5678;,当然,我确实在服务器端将其设置为随机变量,但是有什么方法可以使其在服务器端和客户端同步,并在每个F5上进行更改?那么文件受到了完全保护吗?

PS:我也尝试了Nginx NJS模块,但是它仍然无法同步。

0 个答案:

没有答案