Rumah  >  Soal Jawab  >  teks badan

Proksi - keperluan nginx Apabila mengakses perkhidmatan web, jika pengguna adalah pengguna ujian, ia akan dimajukan ke versi ujian perkhidmatan web.

Butiran keperluan:
Perkhidmatan web dibahagikan kepada pelayan rasmi dan pelayan ujian Melalui proksi nginx, pengguna akan menghantar permintaan log masuk (kaedah pos) kepada nginx apabila mula-mula mengakses Melalui nginx, ia dinilai sama ada pengguna log masuk adalah pengguna ujian. Jika ia adalah pengguna ujian, ia akan dimajukan ke pelayan ujian.

Masalah yang dihadapi:
1. Selepas menentukan bahawa pengguna telah melaksanakannya, bagaimanakah permintaan seterusnya boleh dihantar ke pelayan yang sama? Saya ingin mencapai ini dengan menyimpan pembolehubah, tetapi pembolehubah nginx tidak boleh wujud merentas permintaan. Bolehkah saya menyimpan pembolehubah dengan membaca dan menulis fail? .

2. Bagaimana untuk melaksanakan kaedah lompat?
Di bawah ialah sebahagian daripada kod saya
Lawatan pertama 127.0.0.1/smdb

        location /smdb {
        default_type 'text/plain';
        set $jump 0;
        access_log /var/log/nginx/smdb_access.log smdb;
        error_log /var/log/nginx/error.log;
        log_subrequest on;
        lua_need_request_body on;
                client_max_body_size 50k;
                client_body_buffer_size 50k;
        content_by_lua '
            ngx.req.read_body()
            local args, err = ngx.req.get_post_args()
            if not args then
            ngx.say("failed to get post args: ", err)
            return
            end
            for key, val in pairs(args) do
            if val == "test" then
                ngx.var.jump = "1"
            end
            end
            ngx.exec("/tosmdb")
        ';
    }

    location /tosmdb {
        default_type 'text/plain';
        echo $jump;#注释掉下面,这里显示为1即判断出了用户
        if ($jump = "1"){
            proxy_pass http://smdbtest;
        }
        if ($jump = "0"){
            proxy_pass http://smdb;
        }
    }

phpcn_u1582phpcn_u15822712 hari yang lalu679

membalas semua(1)saya akan balas

  • 迷茫

    迷茫2017-05-16 17:28:13

    Anda perlu meletakkan semua bukti kelayakan pengguna selepas log masuk ke dalam kuki, dan kemudian ia akan memudahkan untuk pengesahan.

    Lihat contoh dalam https://github.com/cloudflare/lua-resty-cookie untuk mendapatkan butiran.

    Menggunakan proxy_pass untuk melompat sepatutnya tiada masalah, ia cukup bagus.

    balas
    0
  • Batalbalas