Soalan:
Saya ingin menggunakan ngx_lua untuk cache antara muka dinamik, dan kaedah yang dipilih oleh pelanggan ialah POST.
Mula-mula saya perlu mendapatkan kandungan kandungan daripada POST, dan kemudian menetapkannya kepada pembolehubah tersuai nginx untuk melakukan tindakan yang sepadan.
Tetapi kini pembolehubah nginx dan pembolehubah dalam skrip lua tidak segerak.
Bagaimana untuk menyelesaikannya?
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;
}
}
Berikut adalah keputusan ujian:
[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>
Tukar kod kepada:
if ($json != 1) {
return 302;
}
Ia akan mengembalikan 302 yang saya nyatakan seperti biasa
[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>
Saya telah selesai menerangkannya. Saya harap pakar dapat memahami soalan dan penerangan saya dan membantu saya menjawabnya.