Maison Opération et maintenance Nginx Comment nginx+iis implémente un équilibrage de charge simple

Comment nginx+iis implémente un équilibrage de charge simple

May 20, 2023 am 09:43 AM
nginx iis

1. Installation de nginx

nginx est un serveur Web/proxy inverse léger et un serveur proxy de messagerie (imap/pop3), et est publié sous un protocole de type bsd. Il a été développé par le programmeur russe Igor Sysoev et est utilisé par Rambler (russe : рамблер), un grand portail russe et moteur de recherche. Ses caractéristiques sont qu'il occupe moins de mémoire et possède de fortes capacités de concurrence. En fait, les capacités de concurrence de nginx fonctionnent mieux parmi les serveurs Web du même type. Les utilisateurs de sites Web nginx en Chine continentale incluent : Baidu, Sina, NetEase, Tencent, etc.

La dernière version de nginx est la 1.9.3. Celle que j'ai téléchargée est la version Windows. Généralement, le scénario actuel consiste à l'installer sous le système Linux. Le système Linux étant actuellement en cours d'exploration, je ne le présenterai pas ici. . Adresse de téléchargement officielle :. Une fois le téléchargement terminé, décompressez et exécutez nginx.exe pour démarrer nginx. Après le démarrage, vous verrez nginx dans le processus.

Comment nginx+iis implémente un équilibrage de charge simple

Pour réaliser l'équilibrage de charge, vous devez modifier les informations de configuration de conf/nginx.conf. Après avoir modifié les informations de configuration, redémarrez le service nginx. Cela peut être réalisé via la commande nginx -s reload. Ici, nous utilisons un processus par lots fourni par les fourmis pour fonctionner.

Comment nginx+iis implémente un équilibrage de charge simple

Placez le fichier nginx.bat dans le même dossier que nginx.exe et exécutez-le directement. Tous les fichiers utilisés dans cet article seront fournis à la fin de l'article.

Comment nginx+iis implémente un équilibrage de charge simple

2. Construction et configuration du site

1. Construire deux sites iis

Il n'y a qu'une simple page d'index sous le site pour afficher les informations actuelles du serveur. Comme je n'ai pas deux machines, j'ai déployé les deux sites sur cette machine et lié les ports 8082 et 9000 respectivement.

 protected void page_load(object sender, eventargs e)
 {
  label0.text = "请求开始时间:"+datetime.now.tostring("yyyy-mm-dd hh:mm:ss");
  label1.text = "服务器名称:" + server.machinename;//服务器名称 
  label2.text = "服务器ip地址:" + request.servervariables["local_addr"];//服务器ip地址 
  label3.text = "http访问端口:" + request.servervariables["server_port"];//http访问端口"
  label4.text = ".net解释引擎版本:" + ".net clr" + environment.version.major + "." + environment.version.minor + "." + environment.version.build + "." + environment.version.revision;//.net解释引擎版本 
  label5.text = "服务器操作系统版本:" + environment.osversion.tostring();//服务器操作系统版本 
  label6.text = "服务器iis版本:" + request.servervariables["server_software"];//服务器iis版本 
  label7.text = "服务器域名:" + request.servervariables["server_name"];//服务器域名 
  label8.text = "虚拟目录的绝对路径:" + request.servervariables["appl_rhysical_path"];//虚拟目录的绝对路径 
  label9.text = "执行文件的绝对路径:" + request.servervariables["path_translated"];//执行文件的绝对路径 
  label10.text = "虚拟目录session总数:" + session.contents.count.tostring();//虚拟目录session总数 
  label11.text = "虚拟目录application总数:" + application.contents.count.tostring();//虚拟目录application总数 
  label12.text = "域名主机:" + request.servervariables["http_host"];//域名主机 
  label13.text = "服务器区域语言:" + request.servervariables["http_accept_language"];//服务器区域语言 
  label14.text = "用户信息:" + request.servervariables["http_user_agent"];
  label14.text = "cpu个数:" + environment.getenvironmentvariable("number_of_processors");//cpu个数 
  label15.text = "cpu类型:" + environment.getenvironmentvariable("processor_identifier");//cpu类型 
  label16.text = "请求来源地址:" + request.headers["x-real-ip"];
 }
Copier après la connexion

2. Modifiez les informations de configuration nginx

Modifiez le port d'écoute nginx et modifiez la valeur du nœud d'écoute sous le serveur http puisque le port 80 de cette machine est déjà occupé, je l'ai changé en écoute sur le port 8083.

Écoutez 8083;

Ajoutez en amont (cluster de serveurs) sous le nœud http. Les paramètres du serveur sont des informations sur le serveur de cluster. J'ai construit deux sites ici et configuré deux informations.

 #服务器集群名称为jq_one
 upstream jq_one {
   server 127.0.0.1:9000; 
   server 127.0.0.1:8082; 
 }
Copier après la connexion

Recherchez le nœud d'emplacement sous le nœud http et modifiez-le

location / {
  root html;
  index index.aspx index.html index.htm; #修改主页为index.aspx
 #其中jq_one 对应着upstream设置的集群名称
 proxy_pass  http://jq_one; 
 #设置主机头和客户端真实地址,以便服务器获取客户端真实ip
 proxy_set_header host  $host; 
 proxy_set_header x-real-ip $remote_addr; 
 proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
 }
Copier après la connexion

N'oubliez pas de redémarrer le service nginx après avoir modifié le fichier de configuration. Les informations finales complètes sur le fichier de configuration sont les suivantes

3 Résultats d'exécution

Visitez http:/. /127.0.0.1:8083/index .aspx, visitez-le plusieurs fois et concentrez-vous sur les parties marquées en rouge.

Comment nginx+iis implémente un équilibrage de charge simple

Comment nginx+iis implémente un équilibrage de charge simple

Vous pouvez voir que notre demande est distribuée au site 8082 et au site 9000, et la première fois est le site 8082 et la deuxième fois est 9000. Un tel résultat prouve que notre configuration d’équilibrage de charge a réussi. Essayez de fermer 9 000 sites, puis actualisez la page et constatez que le port http de sortie est toujours 8082, ce qui signifie que l'un des sites est en panne. Tant qu'il y a encore un bon site, le nôtre peut toujours servir.

4. Analyse des problèmes

Bien que nous ayons construit un site d'équilibrage de charge, il reste encore les problèmes suivants.

1. Si le site utilise la session et que les requêtes sont réparties uniformément sur les deux sites, alors il doit y avoir un problème de partage de session. Comment le résoudre ?

Utilisez la base de données pour enregistrer les informations de session
Utilisez nginx pour attribuer les requêtes de la même IP au serveur fixe Modifiez comme suit. ip_hash calculera la valeur de hachage correspondant à l'adresse IP, puis l'attribuera à un serveur fixe

  upstream jq_one{
   server 127.0.0.1:8082 ;
    server 127.0.0.1:9000 ;
   ip_hash;
  }
Copier après la connexion

Construira un serveur Redis et lira la session à partir du serveur Redis. L'article suivant présentera l'utilisation du cache distribué Redis
2. Comment l'administrateur met-il à jour les fichiers du site maintenant. Vous pouvez mettre à jour manuellement les fichiers sur deux serveurs, alors faites-le manuellement. . Ce n'est certainement pas réalisable

Les mises à jour de sites multi-serveurs peuvent utiliser le programme de synchronisation de fichiers goodsync, qui détectera automatiquement les modifications de fichiers et les nouveaux ajouts, puis se synchronisera avec d'autres serveurs. Vous pouvez utiliser rsync sous Linux
3. La fonction de téléchargement de fichiers du site distribuera les fichiers sur différents serveurs. Comment résoudre le problème de partage de fichiers.

Utilisez un serveur de fichiers pour stocker tous les fichiers sur ce serveur, et les opérations sur les fichiers, la lecture et l'écriture se font toutes sur ce serveur. Il y a aussi un problème ici, le serveur de fichiers a une limite supérieure de lecture et d'écriture.
4. Les serveurs avec des configurations de charge différentes ont des configurations différentes. Certains sont élevés et d'autres sont faibles. Le serveur avec une configuration plus élevée peut-il gérer plus de requêtes ?

Il existe plusieurs algorithmes pour l'équilibrage de charge : méthode de rotation, méthode de hachage, méthode de connexion minimale, méthode manquante la plus faible, méthode de réponse la plus rapide, méthode pondérée. Nous pouvons ici utiliser la méthode de pondération pour répartir les demandes.

 upstream jq_one{
   server 127.0.0.1:8082 weight=4;
    server 127.0.0.1:9000 weight=1;
  }
Copier après la connexion

通过weight设置每台服务器分配请求站的权重,值越高分配的越多。

5.由于请求是经过nginx转发过来的,可以在代码里面获取到用户请求的实际ip地址吗?

答案是肯定的,在localtion节点设置如下请求头信息

 #设置主机头和客户端真实地址,以便服务器获取客户端真实ip
 proxy_set_header host  $host; 
 proxy_set_header x-real-ip $remote_addr; 
 proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
Copier après la connexion

代码里面通过request.headers["x-real-ip"],就能获取到真实ip

6.nginx实现静态文件(image,js,css)缓存

在server节点下添加新的localtion

 #静态资源缓存设置
 location ~ \.(jpg|png|jpeg|bmp|gif|swf|css)$
 { 
  expires 30d;
  root /nginx-1.9.3/html;#root: #静态文件存在地址,这里设置在/nginx-1.9.3/html下
  break;
 }
Copier après la connexion

    这是index页面的代码

  • Comment nginx+iis implémente un équilibrage de charge simple
  • 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 de ce site Web
    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

    Outils d'IA chauds

    Undresser.AI Undress

    Undresser.AI Undress

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

    AI Clothes Remover

    AI Clothes Remover

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

    Undress AI Tool

    Undress AI Tool

    Images de déshabillage gratuites

    Clothoff.io

    Clothoff.io

    Dissolvant de vêtements AI

    AI Hentai Generator

    AI Hentai Generator

    Générez AI Hentai gratuitement.

    Article chaud

    R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Meilleurs paramètres graphiques
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Comment réparer l'audio si vous n'entendez personne
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Comment déverrouiller tout dans Myrise
    4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

    Outils chauds

    Bloc-notes++7.3.1

    Bloc-notes++7.3.1

    Éditeur de code facile à utiliser et gratuit

    SublimeText3 version chinoise

    SublimeText3 version chinoise

    Version chinoise, très simple à utiliser

    Envoyer Studio 13.0.1

    Envoyer Studio 13.0.1

    Puissant environnement de développement intégré PHP

    Dreamweaver CS6

    Dreamweaver CS6

    Outils de développement Web visuel

    SublimeText3 version Mac

    SublimeText3 version Mac

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

    Comment autoriser l'accès au réseau externe au serveur Tomcat Comment autoriser l'accès au réseau externe au serveur Tomcat Apr 21, 2024 am 07:22 AM

    Pour permettre au serveur Tomcat d'accéder au réseau externe, vous devez : modifier le fichier de configuration Tomcat pour autoriser les connexions externes. Ajoutez une règle de pare-feu pour autoriser l'accès au port du serveur Tomcat. Créez un enregistrement DNS pointant le nom de domaine vers l'adresse IP publique du serveur Tomcat. Facultatif : utilisez un proxy inverse pour améliorer la sécurité et les performances. Facultatif : configurez HTTPS pour une sécurité accrue.

    Comment générer une URL à partir d'un fichier HTML Comment générer une URL à partir d'un fichier HTML Apr 21, 2024 pm 12:57 PM

    La conversion d'un fichier HTML en URL nécessite un serveur Web, ce qui implique les étapes suivantes : Obtenir un serveur Web. Configurez un serveur Web. Téléchargez le fichier HTML. Créez un nom de domaine. Acheminez la demande.

    Comment déployer et maintenir un site Web en utilisant PHP Comment déployer et maintenir un site Web en utilisant PHP May 03, 2024 am 08:54 AM

    Pour déployer et maintenir avec succès un site Web PHP, vous devez effectuer les étapes suivantes : Sélectionnez un serveur Web (tel qu'Apache ou Nginx) Installez PHP Créez une base de données et connectez PHP Téléchargez le code sur le serveur Configurez le nom de domaine et la maintenance du site Web de surveillance DNS les étapes comprennent la mise à jour de PHP et des serveurs Web, la sauvegarde du site Web, la surveillance des journaux d'erreurs et la mise à jour du contenu.

    Comment utiliser Fail2Ban pour protéger votre serveur contre les attaques par force brute Comment utiliser Fail2Ban pour protéger votre serveur contre les attaques par force brute Apr 27, 2024 am 08:34 AM

    Une tâche importante pour les administrateurs Linux est de protéger le serveur contre les attaques ou les accès illégaux. Par défaut, les systèmes Linux sont livrés avec des pare-feu bien configurés, tels que iptables, Uncomplicated Firewall (UFW), ConfigServerSecurityFirewall (CSF), etc., qui peuvent empêcher diverses attaques. Toute machine connectée à Internet est une cible potentielle d'attaques malveillantes. Il existe un outil appelé Fail2Ban qui peut être utilisé pour atténuer les accès illégaux sur le serveur. Qu’est-ce que Fail2Ban ? Fail2Ban[1] est un logiciel de prévention des intrusions qui protège les serveurs des attaques par force brute. Il est écrit en langage de programmation Python

    Venez avec moi apprendre Linux et installer Nginx Venez avec moi apprendre Linux et installer Nginx Apr 28, 2024 pm 03:10 PM

    Aujourd'hui, je vais vous amener à installer Nginx dans l'environnement Linux. Le système Linux utilisé ici est CentOS7.2 Préparez les outils d'installation 1. Téléchargez Nginx depuis le site officiel de Nginx. La version utilisée ici est : 1.13.6.2 Téléchargez le Nginx téléchargé sur Linux Ici, le répertoire /opt/nginx est utilisé comme exemple. Exécutez "tar-zxvfnginx-1.13.6.tar.gz" pour décompresser. 3. Basculez vers le répertoire /opt/nginx/nginx-1.13.6 et exécutez ./configure pour la configuration initiale. Si l'invite suivante apparaît, cela signifie que PCRE n'est pas installé sur la machine et que Nginx doit

    Plusieurs points à noter lors de la création d'une haute disponibilité avec keepalived+nginx Plusieurs points à noter lors de la création d'une haute disponibilité avec keepalived+nginx Apr 23, 2024 pm 05:50 PM

    Après que yum ait installé keepalived, configurez le fichier de configuration keepalived. Notez que dans les fichiers de configuration keepalived du maître et de la sauvegarde, le nom de la carte réseau est le nom de la carte réseau de la machine actuelle qui est sélectionnée comme adresse IP disponible. Environnement LAN Il y en a d'autres, donc ce VIP est une IP intranet dans le même segment réseau que les deux machines. S'il est utilisé dans un environnement réseau externe, peu importe qu'il se trouve sur le même segment de réseau, du moment que le client peut y accéder. Arrêtez le service nginx et démarrez le service keepalived. Vous verrez que keepalived démarre le service nginx s'il ne peut pas démarrer et échoue, il s'agit essentiellement d'un problème avec les fichiers de configuration et les scripts, ou d'un problème de prévention.

    Comment implémenter les meilleures pratiques de sécurité PHP Comment implémenter les meilleures pratiques de sécurité PHP May 05, 2024 am 10:51 AM

    Comment mettre en œuvre les meilleures pratiques de sécurité PHP PHP est l'un des langages de programmation Web backend les plus populaires utilisés pour créer des sites Web dynamiques et interactifs. Cependant, le code PHP peut être vulnérable à diverses failles de sécurité. La mise en œuvre des meilleures pratiques de sécurité est essentielle pour protéger vos applications Web contre ces menaces. Validation des entrées La validation des entrées est une première étape essentielle pour valider les entrées utilisateur et empêcher les entrées malveillantes telles que l'injection SQL. PHP fournit une variété de fonctions de validation d'entrée, telles que filter_var() et preg_match(). Exemple : $username=filter_var($_POST['username'],FILTER_SANIT

    L'accès au fichier du site WordPress est restreint: pourquoi mon fichier .txt n'est-il pas accessible via le nom de domaine? L'accès au fichier du site WordPress est restreint: pourquoi mon fichier .txt n'est-il pas accessible via le nom de domaine? Apr 01, 2025 pm 03:00 PM

    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: � ...

    See all articles