Maison >développement back-end >tutoriel php >Installation et configuration de Nginx et PHP 6 : Guide de déploiement du proxy inverse et de l'équilibrage de charge Nginx
Le contenu partagé avec vous dans cet article concerne l'installation et la configuration de Nginx et PHP - Guide de déploiement du proxy inverse et de l'équilibrage de charge Nginx Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer
1. Recherchez et ouvrez le fichier de configuration
2. Configuration de l'équilibrage de charge
nginx utilise par défaut une méthode d'interrogation pour obtenir l'équilibrage de charge. Dans , chaque requête. est attribué aux différents serveurs back-end un par un dans l'ordre chronologique. Si le serveur back-end tombe en panne, il peut être automatiquement éliminé.
Une autre méthode est ip_hash : chaque requête est allouée en fonction du résultat de hachage de l'IP accédée, de sorte que chaque visiteur ait un accès fixe à un serveur back-end, ce qui peut résoudre le problème de session.
L'équilibrage de charge est quelque chose que notre site Web à fort trafic doit faire. Je vais maintenant vous présenter la méthode de configuration de l'équilibrage de charge sur le serveur Nginx. J'espère qu'elle sera utile aux étudiants dans le besoin.
Équilibrage de charge
Commençons par comprendre brièvement ce qu'est l'équilibrage de charge. Cela peut être expliqué simplement en le comprenant littéralement N serveurs partagent la charge de manière égale, et il n'y aura pas de temps d'arrêt dû à une charge élevée sur un certain serveur et un certain serveur ne sera pas inactif. Ensuite, le principe de l'équilibrage de charge est qu'il peut être réalisé par plusieurs serveurs, c'est-à-dire que plus de deux serveurs suffisent.
Environnement de test
Nom de domaine de test : a.com
AServeurIP :192.168.5.149 (Principal)
BServeurIP :192.168.5.27
CServeurIP : 192.168.5.126
Idées de déploiementUn serveur
est utilisé comme serveur principal, et le nom de domaine est directement résolu en A serveur (192.168.5.149), équilibrage de charge du serveur A vers B serveur ( 192.168.5.27) et C serveur (192.168.5.126).
UnServeurnginx.conf Paramètres
Ouvrez nginx.conf, l'emplacement du fichier est nginx Dans le répertoire conf du répertoire d'installation.
Ajoutez le code suivant dans la section http
upstream a.com { server 192.168.5.126:80; server 192.168.5.27:80; } server{ listen 80; server_name a.com; location / { proxy_pass http://a.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 保存重启nginx B、C服务器nginx.conf设置 打开nginx.confi,在http段加入以下代码 server{ listen 80; server_name a.com; index index.html; root /data0/htdocs/www; }
Enregistrez et redémarrez nginx
测试
当访问a.com的时候,为了区分是转向哪台服务器处理我分别在B、C服务器下写一个不同内容的index.html文件,以作区分。
打开浏览器访问a.com结果,刷新会发现所有的请求均分别被主服务器(192.168.5.149)分配到B服务器(192.168.5.27)与C服务器(192.168.5.126)上,实现了负载均衡效果。
假如其中一台服务器宕机会怎样?
当某台服务器宕机了,是否会影响访问呢?
我们先来看看实例,根据以上例子,假设C服务器192.168.5.126这台机子宕机了(由于无法模拟宕机,所以我就把C服务器关机)然后再来访问看看。
我们发现,虽然C服务器(192.168.5.126)宕机了,但不影响网站访问。这样,就不会担心在负载均衡模式下因为某台机子宕机而拖累整个站点了。
如果b.com也要设置负载均衡怎么办?
很简单,跟a.com设置一样。如下:
假设b.com的主服务器IP是192.168.5.149,负载均衡到192.168.5.150和192.168.5.151机器上
现将域名b.com解析到192.168.5.149IP上。
在主服务器(192.168.5.149)的nginx.conf加入以下代码:
u
pstream b.com { server 192.168.5.150:80; server 192.168.5.151:80; } server{ listen 80; server_name b.com; location / { proxy_pass http://b.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 保存重启nginx 在192.168.5.150与192.168.5.151机器上设置nginx,打开nginx.conf在末尾添加以下代码: server{ listen 80; server_name b.com; index index.html; root /data0/htdocs/www; }
保存重启nginx
完成以后步骤后即可实现b.com的负载均衡配置。
主服务器不能提供服务吗?
以上例子中,我们都是应用到了主服务器负载均衡到其它服务器上,那么主服务器本身能不能也加在服务器列表中,这样就不会白白浪费拿一台服务器纯当做转发功能,而是也参与到提供服务中来。
如以上案例三台服务器:
A服务器IP :192.168.5.149 (主)
B服务器IP :192.168.5.27
C服务器IP :192.168.5.126
我们把域名解析到A服务器,然后由A服务器转发到B服务器与C服务器,那么A服务器只做一个转发功能,现在我们让A服务器也提供站点服务。
我们先来分析一下,如果添加主服务器到upstream中,那么可能会有以下两种情况发生:
1、主服务器转发到了其它IP上,其它IP服务器正常处理;
2、主服务器转发到了自己IP上,然后又进到主服务器分配IP那里,假如一直分配到本机,则会造成一个死循环。
怎么解决这个问题呢?因为80端口已经用来监听负载均衡的处理,那么本服务器上就不能再使用80端口来处理a.com的访问请求,得用一个新的。于是我们把主服务器的nginx.conf加入以下一段代码:
server{ listen 8080; server_name a.com; index index.html; root /data0/htdocs/www; }
重启nginx,在浏览器输入a.com:8080试试看能不能访问。结果可以正常访问
既然能正常访问,那么我们就可以把主服务器添加到upstream中,但是端口要改一下,如下代码:
upstream a.com { server 192.168.5.126:80; server 192.168.5.27:80; server 127.0.0.1:8080; }
由于这里可以添加主服务器IP192.168.5.149或者127.0.0.1均可以,都表示访问自己。
Redémarrez Nginx, puis visitez a.com pour voir s'il sera attribué au serveur principal .
Le serveur principal peut également rejoindre le service normalement.
Enfin
1. L'équilibrage de charge n'est pas unique et célèbre pour nginx apache est également disponible, mais les performances peuvent ne pas être aussi bonnes que nginx. 2. Plusieurs serveurs fournissent des services, mais le nom de domaine n'est résolu que sur le serveur principal, et le véritable serveur
IP ne le sera pas. il faut Ping pour l'obtenir, ce qui ajoute un certain degré de sécurité. 3. L'
IP en amont n'est pas nécessairement le réseau interne ou le un réseau externe IP est également disponible. Cependant, le cas classique est qu'une certaine IP dans le réseau local est exposée au réseau externe, et le nom de domaine est directement résolu en cette IP . Ensuite, le serveur principal le transmet au serveur intranet IP . 4. Si un serveur est en panne, cela n'affectera pas le fonctionnement normal du site Web
Nginx ne transmettra pas les requêtes au. serveur en panne. IP sur Article de référence :
http://www. php100.com /html/program/nginx/2013/0905/5525.html
http://www.cnblogs.com/jacktang/p/3669115.html
Installation et configuration de Nginx et php 5. Installez l'extension PHP GD sur LINUX en utilisant PHPIZE
Installation et configuration de Nginx et php 4. Démarrage ou redémarrage de nginx et php
Installation et configuration de Nginx et PHP trois fichiers de configuration nginx
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!