Maison  >  Article  >  développement back-end  >  Le mécanisme de fonctionnement et les principes entre PHP et nginx

Le mécanisme de fonctionnement et les principes entre PHP et nginx

little bottle
little bottleavant
2019-04-17 16:23:412483parcourir

1. Vulgariser les points de connaissances liés à Nginx et Php-fpm

Qu'est-ce que Nginx

Nginx ("moteur x") est un haut- serveur HTTP et proxy inverse performant, également un serveur IMAP/POP3/SMTP.

Qu'est-ce que Php-fpm

1. cgi, protocole fast-cgi
L'histoire de cgi

Les premiers serveurs Web ne traitaient que le HTML, etc. Des fichiers statiques, mais avec le développement de la technologie, des langages dynamiques comme php sont apparus.
Le serveur Web ne peut pas le gérer, que dois-je faire ? Alors laissez l’interpréteur php s’en occuper !
Laisser le soin à l'interpréteur PHP, c'est bien, mais comment l'interpréteur PHP communique-t-il avec le serveur Web ?

Afin de résoudre le problème de communication entre les différents interpréteurs de langage (tels que les interpréteurs php, python) et le serveur Web, le protocole cgi est apparu. Tant que vous écrivez un programme selon le protocole cgi, vous pouvez établir une communication entre l'interprète de langage et le serveur Web. Tel que le programme php-cgi.

Améliorations de fast-cgi

Avec le protocole cgi, le problème de communication entre l'interpréteur php et le serveur web est résolu, et le serveur web peut enfin gérer des langages dynamiques.
Cependant, chaque fois que le serveur Web reçoit une requête, il lancera un processus cgi, puis tuera le processus une fois la requête terminée. S'il y a 10 000 requêtes, le processus php-cgi doit être bifurqué et tué 10 000 fois.

Avez-vous déjà trouvé que c'était un gaspillage de ressources ?

En conséquence, une version améliorée de cgi, fast-cgi, est apparue. Une fois que fast-cgi a traité une requête à chaque fois, il ne tuera pas le processus, mais le conservera afin qu'il puisse gérer plusieurs requêtes à la fois. De cette façon, il n’est pas nécessaire de relancer un processus à chaque fois, ce qui améliore considérablement l’efficacité.

2. Qu'est-ce que php-fpm

php-fpm est php-Fastcgi Process Manager.
php-fpm est l'implémentation de FastCGI et fournit des fonctions de gestion de processus.
Le processus comprend deux types de processus : le processus maître et le processus travailleur.
Il n'y a qu'un seul processus maître, qui est chargé d'écouter le port et de recevoir les requêtes du serveur Web, alors qu'il existe généralement plusieurs processus de travail (le nombre spécifique est configuré en fonction des besoins réels). interprète intégré à l'intérieur, qui est PHP où le code s'exécute réellement.

2. Comment combiner Nginx avec Php-fpm

Nous savons que Nginx a non seulement pour fonction de traiter les requêtes http, mais peut également faire du proxy inverse.
Nginx transmet donc les requêtes dynamiques au backend Php-fpm via la fonction de proxy inverse.

Configurons un nouveau Nginx+Php-fpm

1. Configurez le fichier nginx.conf

Entrez dans le répertoire nginx et modifiez le fichier nginx.conf.
Comme le montre la figure, dans la dernière ligne de nginx.conf, ajoutez le fichier include

2. Ajoutez le serveur correspondant

à entrez le chemin d'inclusion ci-dessus et ajoutez un serveur.

Expliquons la signification des éléments de configuration :


server {    listen       80; #监听80端口,接收http请求
    server_name  www.example.com; #就是网站地址
    root /usr/local/etc/nginx/www/huxintong_admin; # 准备存放代码工程的路径
    #路由到网站根目录www.example.com时候的处理
    location / {        index index.php; #跳转到www.example.com/index.php
        autoindex on;
    }   

    #当请求网站下php文件的时候,反向代理到php-fpm
    location ~ \.php$ {        include /usr/local/etc/nginx/fastcgi.conf; #加载nginx的fastcgi模块
        fastcgi_intercept_errors on;        fastcgi_pass   127.0.0.1:9000; #nginx fastcgi进程监听的IP地址和端口
    }

}

En bref : lorsque nous accédons à When www.example.com, le flux de traitement est le suivant :


 www.example.com        
           |
        |
       Nginx        
         |
        |
   路由到www.example.com/index.php        
        |
        |
  加载nginx的fast-cgi模块        
           |
        |
  fast-cgi监听127.0.0.1:9000地址        
           |
        |
  www.example.com/index.php请求到达127.0.0.1:9000
        |
        |
   等待处理。。。

Ensuite, nous activons php -fpm de php pour gérer cette requête

Ouvrez le fichier php-fpm.conf, on voit la configuration suivante :

C'est à dire : le php- Le module fpm écoute le port 127.0.0.1:9000, en attente. Les requêtes arrivent et sont traitées.

3. Résumé

La combinaison de nginx et php-fpm, le processus complet est comme ceci.


nginx与php-fpm的结合,完整的流程是这样的。

     www.example.com        
            |
        |
      Nginx        
         |
        |
    路由到www.example.com/index.php        
          |
        |
    加载nginx的fast-cgi模块        
          |
        |
    fast-cgi监听127.0.0.1:9000地址        .
          |
        |
   www.example.com/index.php请求到达127.0.0.1:9000
        |
        |
  php-fpm 监听127.0.0.1:9000
        |
        |
  php-fpm 接收到请求,启用worker进程处理请求        
           |
        |
   php-fpm 处理完请求,返回给nginx        
           |
        |
  nginx将结果通过http返回给浏览器

4. Affichage des effets

1. Démarrez les modules nginx et php-fpm

Démarrez avec succès, nous vérifions le processus php-fpm

Comme indiqué ci-dessus, il existe un processus maître et 3 processus de travail.

2. Créez un fichier dans le répertoire du site Web

Nous modifions le fichier comme indiqué ci-dessous :

3. 🎜>

【Tutoriels associés : Tutoriel vidéo PHP

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer