recherche

Maison  >  Questions et réponses  >  le corps du texte

Proxy - une exigence de nginx Lors de l'accès au service Web, si l'utilisateur est un utilisateur test, il sera redirigé vers la version de test du service Web.

Détails des exigences :
Un service Web est divisé en un serveur formel et un serveur de test. Grâce au proxy nginx, l'utilisateur soumettra une demande de connexion (méthode de publication) à nginx lors du premier accès. Grâce à nginx, il est jugé si l'utilisateur connecté est un. utilisateur de test. S'il s'agit d'un utilisateur de test, il sera transmis au serveur de test.

Problèmes rencontrés :
1. Après avoir déterminé que l'utilisateur l'a implémenté, comment les requêtes ultérieures peuvent-elles être envoyées au même serveur ? Je souhaite y parvenir en enregistrant une variable, mais les variables nginx ne peuvent pas exister dans les requêtes. Puis-je enregistrer la variable en lisant et en écrivant des fichiers ? .

2. Comment mettre en œuvre la méthode du saut ?
Vous trouverez ci-dessous une partie de mon code
Première visite 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 Il y a quelques jours712

répondre à tous(1)je répondrai

  • 迷茫

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

    Vous devez saisir toutes les informations d'identification de l'utilisateur après vous être connecté au cookie, ce qui sera ensuite pratique pour la vérification.

    Voir les exemples sur https://github.com/cloudflare/lua-resty-cookie pour plus de détails.

    Utiliser proxy_pass pour sauter ne devrait poser aucun problème, c'est plutôt bien.

    répondre
    0
  • Annulerrépondre