


Question d'entretien PHP 7 : Comment configurer l'équilibrage de charge nginx
Le contenu de cet article explique comment configurer l'équilibrage de charge de nginx dans la question d'entretien PHP 7. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
Équilibrage de chargeInterrogation (par défaut)
Chaque requête est attribuée à un serveur back-end différent une par une dans l'ordre chronologique. Si le serveur back-end tombe en panne, il peut être automatiquement éliminé.
2),
poids
Spécifiez la probabilité d'interrogation, le poids est proportionnel au taux d'accès et est utilisé lorsque les performances du serveur principal sont inégales.
2),
ip_hash
Chaque requête est allouée en fonction du résultat de hachage de l'adresse IP d'accès, de sorte que chaque visiteur dispose d'un accès fixe à un serveur back-end, ce qui peut résoudre le problème de session.
3),
équitable (tiers)
Les requêtes sont allouées en fonction du temps de réponse du serveur back-end, et celles avec des temps de réponse courts sont allouées en premier.
4),
url_hash (tiers)
upstream webname { server 192.168.0.1:8080; server 192.168.0.2:8080; }
upstream webname { server 192.168.0.1:8080 weight 2; server 192.168.0.2:8080 weight 1; }
upstream webname { ip_hash; server 192.168.0.1:8080; server 192.168.0.2:8080; }
location /name { proxy_pass http://webname/name/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }
upstream webname { server 192.168.0.1:8080; server 192.168.0.2:8080 backup; }
upstream webname { server 192.168.0.1:8080; server 192.168.0.2:8080 down; }
Comme il n'y a pas de serveur, ce test héberge directement le nom de domaine spécifié, puis installe trois CentOS dans VMware.
Un serveur est utilisé comme serveur principal, le nom de domaine est directement résolu en serveur A (192.168.5.149) et la charge du serveur A est équilibrée en serveur B ( 192.168.5.27) et C sur le serveur (192.168.5.126).
C:WindowsSystem32driversetchosts
192.168.5.149 a.com
Ouvrez nginx.conf et l'emplacement du fichier est dans la conf répertoire du répertoire d'installation de nginx.
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; } }
Ouvrez nginx.confi et ajoutez dans la section http Le code suivant
server{ listen 80; server_name a.com; index index.html; root /data0/htdocs/www; }
Lors de l'accès à a.com, afin de distinguer vers quel serveur transférer pour le traitement, je en a écrit un sous les serveurs B et C respectivement. fichiers Index.html avec des contenus différents pour les distinguer.
Lorsqu'un serveur tombe en panne, l'accès sera-t-il affecté ?
如果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加入以下代码:
upstream 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均可以,都表示访问自己。
重启Nginx,然后再来访问a.com看看会不会分配到主服务器上。
主服务器也能正常加入服务了。
最后
一、负载均衡不是nginx独有,著名鼎鼎的apache也有,但性能可能不如nginx。
二、多台服务器提供服务,但域名只解析到主服务器,而真正的服务器IP不会被ping下即可获得,增加一定安全性。
三、upstream里的IP不一定是内网,外网IP也可以。不过经典的案例是,局域网中某台IP暴露在外网下,域名直接解析到此IP。然后又这台主服务器转发到内网服务器IP中。
四、某台服务器宕机、不会影响网站正常运行,Nginx不会把请求转发到已宕机的IP上
相关推荐:
php面试题五之nginx如何调用php和php-fpm的作用和工作原理
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

L'accès au fichier du site WordPress est restreint: dépannage de la raison pour laquelle le fichier .txt ne peut pas être accessible récemment. Certains utilisateurs ont rencontré un problème lors de la configuration du nom de domaine commercial du programme MINI: � ...

CMS signifie Système de gestion de contenu. Il s'agit d'une application logicielle ou d'une plate-forme qui permet aux utilisateurs de créer, gérer et modifier du contenu numérique sans nécessiter de connaissances techniques avancées. Le CMS permet aux utilisateurs de créer et d'organiser facilement du contenu tel que du texte, des images, des vidéos et des documents, et de le publier sur des sites Web ou d'autres plateformes numériques.

PHP fournit des outils permettant aux sites Web d'intégrer facilement les fonctions de médias sociaux : 1. Générer dynamiquement des boutons de partage de médias sociaux permettant aux utilisateurs de partager du contenu ; 2. Intégrer la bibliothèque OAuth pour obtenir une connexion transparente aux médias sociaux ; 3. Utiliser la bibliothèque HTTP pour capturer les réseaux sociaux ; Données multimédias, obtenir un profil utilisateur, des publications et d'autres informations.
