Comment nginx+iis implémente un équilibrage de charge simple
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.
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.
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.
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"]; }
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; }
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; }
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.
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; }
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; }
通过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;
代码里面通过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; }
这是index页面的代码

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)

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.

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.

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.

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

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

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