nginx est un serveur http et proxy inverse hautes performances connu pour sa grande stabilité, son riche ensemble de fonctionnalités, ses exemples de fichiers de configuration et sa faible consommation de ressources système.
nginx Fonctionnalités Gérer les fichiers statiques, les fichiers d'index et l'indexation automatique ; Accélération du proxy inverse sans cache, équilibrage de charge simple et tolérance aux pannes. fastcgi, équilibrage de charge simple et tolérance aux pannes. Structure modulaire. Y compris le gzipping, les plages d'octets, les réponses fragmentées, le filtre ssi et d'autres filtres. Si plusieurs ssi présents sur une même page sont traités par fastcgi ou un autre serveur proxy, ce traitement peut s'exécuter en parallèle sans s'attendre. Supporte SSL et TLSSNI. Principaux scénarios d'application 1. Serveur http statique
Tout d'abord, nginx est un serveur http qui peut afficher des fichiers statiques (tels que du HTML et des images) sur le serveur au client via le protocole http.
Configuration :
server { listen 80; # 端口号 location / { root /usr/share/nginx/html; # 静态文件路径 } }
2. Serveur proxy inverse
Qu'est-ce qu'un proxy inverse ?
Le client peut accéder directement à un serveur d'applications de site Web via le protocole http. Si l'administrateur du site Web ajoute un nginx au milieu, le client demande nginx, nginx demande au serveur d'applications, puis renvoie le résultat à le client., à l'heure actuelle, nginx est le serveur proxy inverse.
Configuration :
server { listen 80; location / { proxy_pass http://192.168.20.1:8080; # 应用服务器http地址 } }
Puisque le serveur est accessible directement via http, pourquoi devrions-nous ajouter un proxy inverse dans le au milieu ? Non Est-ce inutile ? À quoi sert un proxy inverse ? En continuant à regarder vers le bas, l'équilibrage de charge et les hôtes virtuels suivants sont tous implémentés sur la base du proxy inverse. Bien entendu, les fonctions du proxy inverse ne se limitent pas à ceux-ci.
3. Équilibrage de charge
Lorsque le trafic du site Web est très important, le webmaster est heureux de gagner de l'argent, mais en même temps il est aussi en difficulté. Le site Web étant de plus en plus lent, un seul serveur ne suffit plus. Ainsi, la même application est déployée sur plusieurs serveurs et les requêtes d'un grand nombre d'utilisateurs sont distribuées sur plusieurs machines pour être traitées. Dans le même temps, l'avantage est que si l'un des serveurs tombe en panne, tant que les autres serveurs fonctionnent normalement, cela n'affectera pas l'utilisation de l'utilisateur.
Lorsque notre site Web subit une mise à jour majeure, il nous est impossible d'arrêter directement tous les serveurs puis de procéder à une mise à niveau. Habituellement, nous arrêtons certains serveurs par lots pour mettre à niveau le site Web et, lorsqu'il y a des demandes d'utilisateurs, nous les attribuons à d'autres machines en cours d'exécution pour traitement. Une fois les machines précédemment éteintes mises à jour, rallumez-les, puis éteignez certaines machines par lots, en répétant le cycle ci-dessus jusqu'à ce que toutes les machines soient enfin mises à jour. Cela n’affectera pas l’utilisation des utilisateurs.
nginx peut réaliser un équilibrage de charge via un proxy inverse.
Configuration :
upstream myapp { server 192.168.20.1:8080; # 应用服务器1 server 192.168.20.2:8080; # 应用服务器2 } server { listen 80; location / { proxy_pass http://myapp; } }
4, hôte virtuel
Le site dispose d'un grand nombre de visites et nécessite une charge équilibrée. Cependant, tous les sites Web ne sont pas aussi performants. Certains sites Web doivent réaliser des économies en déployant plusieurs sites Web sur le même serveur en raison du faible nombre de visites.
Par exemple, deux sites Web www.aaa.com et www.bbb.com sont déployés sur le même serveur. Les deux noms de domaine renvoient à la même adresse IP, mais les utilisateurs peuvent les ouvrir via les deux. noms de domaine. Deux sites Web complètement différents ne s’influencent pas, tout comme l’accès à deux serveurs, c’est pourquoi ils sont appelés deux hôtes virtuels.
Configuration :
server { listen 80 default_server; server_name _; return 444; # 过滤其他域名的请求,返回444状态码 } server { listen 80; server_name www.aaa.com; # www.aaa.com域名 location / { proxy_pass http://localhost:8080; # 对应端口号8080 } } server { listen 80; server_name www.bbb.com; # www.bbb.com域名 location / { proxy_pass http://localhost:8081; # 对应端口号8081 } }
Ouvrez une application sur les ports du serveur 8080 et 8081 respectivement. Le client accède via différents noms de domaine. Selon le nom du serveur, il peut inverser le proxy. serveur d'applications correspondant.
Le principe de l'hôte virtuel est réalisé selon que l'hôte dans l'en-tête de la requête http correspond au nom du serveur. Les étudiants intéressés peuvent étudier le protocole http.
De plus, la configuration server_name peut également filtrer quelqu'un qui pointe de manière malveillante certains noms de domaine vers votre serveur hôte.
5, fastcgi
nginx lui-même ne prend pas en charge les langagestels que php, mais il peut lancer des requêtes vers certains langagesou frameworks via fastcgi ( comme php, python, perl).
server { listen 80; location ~ \.php$ { include fastcgi_params; fastcgi_param script_filename /php文件路径$fastcgi_script_name; # php文件路径 fastcgi_pass 127.0.0.1:9000; # php-fpm地址和端口号 # 另一种方式:fastcgi_pass unix:/var/run/php5-fpm.sock; } }
Dans la configuration, les requêtes se terminant par .php sont transmises à php-fpm pour traitement via fashcgi. php-fpm est un gestionnaire fastcgi de php. Vous pouvez vérifier d'autres informations sur fashcgi, qui ne seront pas présentées dans cet article.
Quelle est la différence entre fastcgi_pass et proxy_pass ? L'image suivante vous aidera à comprendre :
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!