luajit - rewrite_by_lua mengubah nilai pembolehubah, tetapi nilai pembolehubah nginx yang sepadan tidak mempunyai perubahan
巴扎黑
巴扎黑 2017-05-16 17:14:26
0
1
747

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.

巴扎黑
巴扎黑

membalas semua(1)
阿神
把  set $json 1;
改成  set $json ‘’;

这样是可以的,根本原因有待进一步挖掘。
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan