Maison  >  Article  >  développement back-end  >  Installation et configuration de Nginx et PHP huit partage de session nginx

Installation et configuration de Nginx et PHP huit partage de session nginx

不言
不言original
2018-04-14 10:05:311390parcourir

Le contenu de cet article est de partager avec vous l'installation et la configuration de Nginx et PHP huit sessions nginx. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer

Vérifiez I. lire quelques informations et lire certains documents écrits par d'autres. Le résumé est le suivant, pour réaliser le partage de session nginx

PHP Il y a plusieurs serveurs, utilisez nginx pour l'équilibrage de charge, afin que la même IP accéderont à la même page sont attribués à des serveurs différents. Si la session est désynchronisée, de nombreux problèmes surviendront, comme l'état de connexion le plus courant. Voici plusieurs façons de le faire. résoudre lesessionProblèmes partagés :

1, sans utiliser la session , remplacer par cookie

session est stocké côté serveur, cookie est stocké Côté client, on peut mettre la session générée par l'accès de l'utilisateur à la page dans le cookie, c'est-à-dire que Cookie est une station de transfert. Vous accédez au serveur web A, générez une session puis la mettez dans Inside le cookie, lorsque votre demande est attribuée au serveur B, le serveur BDéterminez d'abord si le serveur a cette session Sinon, vérifiez si le cookie contient celasession, sinon, cela signifie que session n'existe vraiment pas, si le cookie est à l'intérieur Oui, synchronisez le sessoin dans le cookie au serveur B, comme ça Vous peut réaliser la synchronisation de la session.

Remarque : Cette méthode est simple et pratique à mettre en œuvre, et n'augmentera pas la charge sur la

base de données . Cependant, si le client désactive le cookie, alors la session ne peut pas être synchronisée, ce qui entraînera des pertes pour le site Web ; Le cookie n'est pas très sécurisé Bien qu'il ait été crypté, il peut toujours être falsifié.

2

, session existe dans la base de données (MySQL etc.) en

php peut être configuré pour enregistrer la session dans la base de données. Cette méthode consiste à stocker <. les tables de>session sont rassemblées avec d'autres tables de la base de données. Si mysql est également clusterisé, chaque mysql doivent avoir cette table, et la table de données de cette table session doit être synchronisée en temps réel.

Remarque : utilisez la base de données pour synchroniser la

session, et ajouterez du big dataL'IOIO de la bibliothèque augmente la charge sur la base de données. De plus, la vitesse de lecture et d'écriture de la base de données est lente, ce qui n'est pas propice à une synchronisation rapide de la session.

3

, session existememcache ou Redis en

memcache

peut être distribué, phpDéfinissez la méthode de stockage dans le fichier de configuration sur memcache, afin que php crée un par lui-même, le cluster de session stocke les données de session dans memcache.

Remarque : La synchronisation de la

session de cette manière n'augmentera pas la charge sur la base de données et est plus sécurisée que l'utilisation de cookie est grandement amélioré. Mettre une session en mémoire est beaucoup plus rapide que la lecture d'un fichier. Mais memcache divise la mémoire en blocs de stockage de nombreuses spécifications. Chaque bloc a une taille, qui est déterminée par cette méthode. La mémoire ne peut pas être entièrement utilisée et une fragmentation de la mémoire se produira. Si les blocs de stockage sont insuffisants, un débordement de mémoire se produira. La technologie ip_hash dans

4

, nginx peut Diriger la demande d'un certain ip vers le même backend, afin qu'un client sous ce ip et un certain A stable session peut être établie avec un seul backend, et ip_hash est en amontDéfini dans la configuration : [html]

voir plaine copie


1.   upstream nginx.example.com  
2.       {   
3.                server 192.168.74.235:80;   
4.                server 192.168.74.236:80;  
5.                ip_hash;  
6.       }  
7.       server  
8.       {  
9.                listen 80;  
10.               location /  
11.               {  
12.                       proxy_pass  
13.                      http://nginx.example.com;  
14.               }  
15.   }

ip_hash est facile à comprendre, mais parce que seul le facteur ip peut être utilisé pour allouer le backend, donc ip_hash est défectueux et ne peut pas être utilisé dans certaines situations :
1.nginx
n'est pas un serveur frontal.

ip_hash nécessite nginx doit être le serveur frontal, sinon nginxSi vous n'obtenez pas le bon IP, vous ne pouvez pas créer de hachage

ip 🎜>. Par exemple, si vous utilisez squid comme frontal, alors nginx prend ip Seule l'adresse ip du serveur squid peut être obtenue. Il est vraiment déroutant d'utiliser cette adresse pour la distribution. 2. Le backend de nginx
dispose d'autres méthodes d'équilibrage de charge.

Si nginx a un autre équilibrage de charge dans le backend et détourne la demande via une autre méthode, alors la demande d'un certain client est définitivement ne peut pas être localisé sur le même serveur d'applications session. En le calculant de cette façon, le backend nginx ne peut pointer directement que vers le serveur d'applications, ou créer un autre squid puis pointer vers le serveur d'applications. Le meilleur moyen est d'utiliser la localisation pour faire une déviation, et de transmettre certaines requêtes qui nécessitent une session via ip_hash Détournez le trafic et accédez à d'autres backends pour le reste.

Recommandations associées :

Installation et configuration de Nginx et PHP 5 stratégies pour sept équilibrages de charge nginx

Installation et configuration de Nginx et php 6 : Guide de déploiement du proxy inverse et de l'équilibrage de charge Nginx

Installation et configuration de Nginx et php 5 : LINUX avec PHPIZE Installer PHP GD rallonge

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn