luajit - rewrite_by_lua ändert den Variablenwert, aber der entsprechende Nginx-Variablenwert hat keine Änderung
巴扎黑
巴扎黑 2017-05-16 17:14:26
0
1
724

Frage:
Ich möchte ngx_lua verwenden, um eine dynamische Schnittstelle zwischenzuspeichern, und die vom Client ausgewählte Methode ist POST.
Zuerst muss ich den Textinhalt von POST abrufen und ihn dann einer benutzerdefinierten Variablen von Nginx zuweisen, um die entsprechende Aktion auszuführen.
Aber jetzt sind die Nginx-Variablen und die Variablen im Lua-Skript nicht synchron.
Wie kann man es lösen?


    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;
        }
    }

Das Folgende sind die Testergebnisse:

[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>

Ändern Sie den Code in:

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

Es wird die 302 zurückgegeben, die ich normalerweise angegeben habe

[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>

Ich bin mit der Beschreibung fertig. Ich hoffe, dass die Experten meine Frage und Beschreibung verstehen und mir bei der Beantwortung helfen können.

巴扎黑
巴扎黑

Antworte allen(1)
阿神
把  set $json 1;
改成  set $json ‘’;

这样是可以的,根本原因有待进一步挖掘。
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!