luajit - rewrite_by_lua modifie la valeur de la variable, mais la valeur de la variable nginx correspondante n'a aucun changement
巴扎黑
巴扎黑 2017-05-16 17:14:26
0
1
749

Question :
Je souhaite utiliser ngx_lua pour mettre en cache une interface dynamique, et la méthode sélectionnée par le client est POST.
Je dois d'abord obtenir le contenu du corps de POST, puis l'attribuer à une variable personnalisée de nginx pour effectuer l'action correspondante.
Mais maintenant, les variables nginx et les variables du script lua sont désynchronisées.
Comment le résoudre ?


    location ~* \.(do|action|jsp) {
        lua_code_cache off;
        set $json 1;
        rewrite_by_lua '
            local request_method = ngx.var.request_method
                if request_method == "POST" then
                    ngx.req.read_body()
                    local value = ngx.req.get_post_args()["data"] or 0
                    ngx.var.json = value
                end;';
        if ($json != 1) {
            return 302;
        }
    }

Voici les résultats des tests :

[root@localhost extra]# curl -d 'data={"appType":1,"msg":"{\"type\":\"0\"}","msgId":"8608320379583571473667378628","msgVersion":"3.1","type":"HOMEPAGE3_1","uId":"120351"}' http://192.168.9.181/api/msgHandler.action
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.7.8</center>
</body>
</html>

Changez le code comme suit :

if ($json != 1) {
    return 302;
}

Il renverra le 302 que j'ai spécifié normalement

[root@localhost extra]# curl -d 'data={"appType":1,"msg":"{\"type\":\"0\"}","msgId":"8608320379583571473667378628","msgVersion":"3.1","type":"HOMEPAGE3_1","uId":"120351"}' http://192.168.9.181/api/msgHandler.action
<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx/1.7.8</center>
</body>
</html>

J'ai fini de le décrire. J'espère que les experts pourront comprendre ma question et ma description et m'aider à y répondre, je suis très reconnaissant.

巴扎黑
巴扎黑

répondre à tous(1)
阿神
把  set $json 1;
改成  set $json ‘’;

这样是可以的,根本原因有待进一步挖掘。
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal