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 via le protocole http au client. 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. L'administrateur du site Web peut ajouter un nginx au milieu. Le client demande nginx, nginx demande au serveur d'applications, puis renvoie le résultat au serveur d'applications. client. , nginx est actuellement 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 ?
Continuez à regarder vers le bas. L'équilibrage de charge, l'hôte virtuel, etc. suivants sont tous basés sur le proxy inverse. Bien entendu, les fonctions du proxy inverse ne sont pas les seules.
3. Équilibrage de charge
Lorsque le trafic du site Web est très important, alors que le webmaster est heureux de gagner de l'argent, il est également en difficulté . Comme le site Web devient 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. 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; } }
La configuration ci-dessus attribuera l'interrogation des requêtes au serveur d'applications, c'est-à-dire plusieurs fois pour un Les demandes des clients peuvent être traitées par plusieurs serveurs différents. Vous pouvez utiliser ip-hash pour attribuer des requêtes à un serveur fixe pour traitement en fonction de la valeur de hachage de l'adresse IP du client.
Configuration :
upstream myapp { ip_hash; # 根据客户端ip地址hash值将请求分配给固定的一个服务器处理 server 192.168.20.1:8080; server 192.168.20.2:8080; } server { listen 80; location / { proxy_pass http://myapp; } }
De plus, la configuration matérielle du serveur peut être bonne ou mauvaise. Je souhaite attribuer la plupart des requêtes aux bons serveurs et un petit nombre de requêtes aux bons. serveurs médiocres, qui peuvent être contrôlés par le poids.
Configuration :
upstream myapp { server 192.168.20.1:8080 weight=3; # 该服务器处理3/4请求 server 192.168.20.2:8080; # weight默认为1,该服务器处理1/4请求 } server { listen 80; location / { proxy_pass http://myapp; } }
4 Hôte virtuel
Certains sites internet ont un grand nombre de visites et nécessitent une charge. équilibrage. 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 } }
Une application est ouverte sur les serveurs 8080 et 8081 respectivement. Le client accède via différents noms de domaine et peut inverser le proxy vers le serveur d'application correspondant en fonction du nom du serveur. .
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 langages tels que php, mais il peut lancer des requêtes vers certaines langues ou frameworks via le traitement fastcgi (par exemple 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 pour 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!