suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Proxy – eine Nginx-Anforderung. Wenn der Benutzer auf den Webdienst zugreift, wird er an die Testversion des Webdiensts weitergeleitet.

Anforderungsdetails:
Ein Webdienst ist in einen formalen Server und einen Testserver unterteilt. Über den Nginx-Proxy sendet der Benutzer beim ersten Zugriff eine Anmeldeanforderung (Post-Methode) über Nginx Testbenutzer. Wenn es sich um einen Testbenutzer handelt, wird er an den Testserver weitergeleitet.

Aufgetretene Probleme:
1. Wie können nachfolgende Anforderungen an denselben Server gesendet werden, nachdem festgestellt wurde, dass der Benutzer es implementiert hat? Ich möchte dies erreichen, indem ich eine Variable speichere, aber Nginx-Variablen können nicht über mehrere Anfragen hinweg existieren. Kann ich die Variable durch Lesen und Schreiben von Dateien speichern? .

2. Wie implementiert man die Sprungmethode?
Unten ist ein Teil meines Codes
Besuchen Sie zuerst 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_u15822747 Tage vor713

Antworte allen(1)Ich werde antworten

  • 迷茫

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

    你需要把用户登录后的凭证都放到 cookie 里面,然后就方便做验算了。

    详见 https://github.com/cloudflare/lua-resty-cookie 里面的例子。

    跳转的方式用 proxy_pass 应该没问题,挺好的。

    Antwort
    0
  • StornierenAntwort