Les écouteurs Skullcandy Indy Fuel Punch au-dessus de leur étiquette de prix de 100 $ – Review Geek
8 juillet 2020
Les meilleurs hémisphères bosus ou équilibre (Mise à jour: juillet 2020) · CompraMejor.es
8 juillet 2020

Logo NGINX
NGINX

NGINX est couramment utilisé comme serveur Web, mais il fait également un excellent travail en tant que proxy inverse et équilibreur de charge – un périphérique réseau conçu pour gérer la majeure partie de votre trafic et acheminer les demandes vers plusieurs serveurs Web différents.

Fonctionnement de l'équilibrage de charge NGINX

Le principe de base d'un équilibreur de charge est qu'il se situe entre l'utilisateur et un ensemble de serveurs, et les demandes de proxy pour eux. Habituellement, cela se fait avec deux serveurs ou plus, afin que le trafic puisse être réparti plus facilement entre eux.

Un équilibreur de charge NGINX.

La plupart de la configuration se produit dans la façon dont NGINX sélectionne le serveur vers lequel router. La valeur par défaut est round-robin, qui enverra les demandes à chaque serveur dans l'ordre, garantissant une répartition de charge égale.

Cependant, ce n'est pas toujours aussi simple. De nombreuses applications Web nécessitent une certaine forme de persistance de session, ce qui signifie que l'utilisateur doit accéder au même serveur pendant toute sa session. Par exemple, un panier peut être stocké localement sur un serveur d'applications et si l'utilisateur change de serveur en cours de session, l'application peut se briser. Bien sûr, bon nombre de ces scénarios peuvent être corrigés avec une meilleure infrastructure d'application et des banques de données centralisées, mais la persistance de session est requise par de nombreuses personnes.

Dans NGINX, l'ensemble des serveurs vers lesquels vous routez est appelé en amontet est configuré comme une liste énumérée d'adresses:

en amont backend {
    serveur backend1.example.com poids = 5;
    serveur backend2.example.com;
}

Ces amonts avoir beaucoup d'options; ici, nous avons défini un poids, qui donnera la priorité à ce serveur plus souvent (particulièrement utile si vous avez des tailles différentes). Vous pouvez également définir les connexions maximales et divers délais d'expiration. Si vous utilisez NGINX Plus, vous pouvez également configurer des contrôles d'intégrité afin que les connexions ne soient pas acheminées vers des serveurs malsains.

La forme la plus élémentaire de persistance de session utilise un hachage IP. NGINX utilisera l'IP pour identifier les utilisateurs et s'assurera ensuite que ces utilisateurs ne changent pas de serveur en cours de session:

en amont backend {
    ip_hash;
    serveur backend1.example.com;
                serveur backend2.example.com;
}

Le hachage IP est requis pour les applications basées sur des sockets et tout ce qui nécessite de la persistance. Si vous ne souhaitez pas utiliser l'adresse IP, vous pouvez personnaliser ce hachage:

en amont backend {
    hachage $ schéma $ request_uri cohérent;
    serveur backend1.example.com;
                serveur backend2.example.com;
}

Si vous n'avez besoin d'aucune sorte de persistance de session, vous pouvez faire un peu plus intelligemment la sélection du round robin en sélectionnant le serveur qui a le moins de connexions:

en amont backend {
    less_conn;
    serveur backend1.example.com;
                serveur backend2.example.com;
}

Ou, en fonction de celui qui répond actuellement le plus rapidement:

en amont backend {
moindre_heure (en-tête | dernier_octet);
    serveur backend1.example.com;
                serveur backend2.example.com;
}

NGINX Plus a quelques autres formes de persistance de session, mais le hachage IP fonctionnera pour la plupart des applications.

Procuration au backend

Une fois que vous avez configuré votre backend, vous pouvez lui envoyer des demandes à partir de vos blocs de localisation, en utilisant proxy_pass avec un URI au backend.

serveur {
    écouter 80;
    nom_serveur example.com;
    emplacement / {
        proxy_pass http: // backend;
    }
}

Bien sûr, si vous utilisez HTTPS, vous devrez envoyer la demande avec HTTPS:

serveur {
    Ecoutez      443 ssl;
                nom du serveur exemple.com;

    ssl_certificate        /etc/ssl/certs/server.crt;
    ssl_certificate_key    /etc/ssl/certs/server.key;
    ssl_client_certificate /etc/ssl/certs/ca.crt;

    emplacement /{
       proxy_pass https: // backend;
    }
}
//]]>