suchen

Heim  >  Fragen und Antworten  >  Hauptteil

luajit - rewrite_by_lua ändert den Variablenwert, aber der entsprechende Nginx-Variablenwert hat keine Änderung

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.

巴扎黑巴扎黑2757 Tage vor757

Antworte allen(1)Ich werde antworten

  • 阿神

    阿神2017-05-16 17:16:26

    把  set $json 1;
    改成  set $json ‘’;
    
    这样是可以的,根本原因有待进一步挖掘。

    Antwort
    0
  • StornierenAntwort