Heim > Fragen und Antworten > Hauptteil
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.