Rumah  >  Soal Jawab  >  teks badan

luajit - rewrite_by_lua mengubah nilai pembolehubah, tetapi nilai pembolehubah nginx yang sepadan tidak mempunyai perubahan

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.

巴扎黑巴扎黑2713 hari yang lalu728

membalas semua(1)saya akan balas

  • 阿神

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

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

    balas
    0
  • Batalbalas