Maison Opération et maintenance Nginx Comment implémenter le mode d'accélération Nginx+PHP+FastCGI

Comment implémenter le mode d'accélération Nginx+PHP+FastCGI

May 14, 2023 pm 04:34 PM
php nginx fastcgi

1. Processus d'accès de l'utilisateur à la page Web PHP dynamique

Le navigateur de l'utilisateur initie l'accès à la page Web : http://192.168.1.103/index.php

L'utilisateur et le serveur nginx effectuent une négociation à trois pour la connexion TCP (en ignorant les politiques de contrôle d'accès, notamment la politique de contrôle d'accès nginx, le pare-feu nginx et les autres politiques de contrôle d'accès)

Étape 1 : L'utilisateur envoie la requête http au serveur nginx

Étape 2 : nginx jugera la requête en fonction de l'URI et du suffixe visités par l'utilisateur

1. Par exemple, si l'utilisateur accède à index.php, nginx le fera correspondre en fonction de l'emplacement dans le fichier de configuration, par exemple :

[email protected]:/data/web# cat /etc/nginx/conf.d/blog.conf  server {     root /data/web/blog/;     index index.html index.htm;     server_name www.fwait.com;     location / {         try_files $uri $uri/ /index.html;     }     location /blog/ {         #alias /usr/share/doc/;         auth_basic "authorized users only";         auth_basic_user_file /etc/nginx/passwd.conf;         #autoindex on;         allow 192.168.1.103;         deny all;     }     location ~ \.php$ {         include /etc/nginx/fastcgi_params;         fastcgi_intercept_errors on;         fastcgi_pass 127.0.0.1:9000;     } }<br>
Copier après la connexion

Si l'utilisateur accède à index.php, il correspondra à l'emplacement ~ .php$. Cela signifie que les ressources accessibles par l'utilisateur via l'URI correspondent en fonction de la taille et que les ressources accédées se terminent par .php.

Une fois que nginx correspond à l'emplacement spécifique en fonction de la ressource demandée par l'utilisateur, il exécutera l'action correspondant à l'emplacement. La signification de l'action dans l'emplacement est :

. include /etc/nginx/fastcgi_params; #Indique que nginx appellera l'interface fastcgi

fastcgi_intercept_errors on ; #Indique l'activation de l'interruption fastcgi et l'enregistrement des informations d'erreur

fastcgi_pass 127.0.0.1:9000; # Indique que nginx envoie les ressources demandées par l'utilisateur à 127.0.0.1:9000 pour analyse via fastcgi_pass. Les serveurs d'analyse de scripts nginx et php ici sont sur la même machine, donc 127.0.0.1:9000 représente. Il s'agit d'un serveur d'analyse de scripts php local.

Selon la configuration du serveur nginx, on peut voir que l'utilisateur accède aux ressources PHP dynamiques, et nginx appellera des programmes d'analyse de scripts liés à PHP pour analyser les ressources auxquelles l'utilisateur accède.

Étape 3 : Il ressort de la deuxième étape que l'utilisateur demande du contenu dynamique. nginx transmettra la demande au client fastcgi et enverra la demande de l'utilisateur à php-fpm via fastcgi_pass

. Si l'utilisateur accède à des ressources statiques, c'est simple, nginx renvoie directement les ressources statiques demandées par l'utilisateur à l'utilisateur.

Étape 4 : Après que fastcgi_pass ait remis les ressources dynamiques à php-fpm, php-fpm transférera les ressources vers le wrapper du serveur d'analyse de script php

Comment implémenter le mode daccélération Nginx+PHP+FastCGI

#🎜🎜 #

Comment implémenter le mode daccélération Nginx+PHP+FastCGI

Étape 5 : Une fois que le wrapper a reçu la requête transférée depuis php-fpm, le wrapper générera un nouveau thread pour appeler le serveur d'analyse du programme dynamique php

Si l'utilisateur demande à lire une base de données MySQL par exemple, l'opération de lecture de la base de données sera déclenchée ;

Si l'utilisateur demande des images/pièces jointes, etc., PHP déclenchera une requête vers le serveur de stockage principal tel qu'un cluster de stockage stocké via NFS ;

Étape 6 : PHP renverra les résultats de la requête à nginx

Étape 7 : nginx construit un message de réponse et renvoie le résultat à l'utilisateur

Ce n'est qu'un type de nginx. La demande de l'utilisateur et le retour du résultat de la demande de l'utilisateur sont effectués de manière asynchrone, c'est-à-dire que la ressource demandée par l'utilisateur est transférée dans nginx et que nginx peut la synchroniser, c'est-à-dire que la ressource analysée est renvoyée directement. par le serveur. Pour les utilisateurs, il n'est pas nécessaire d'effectuer un transfert dans nginx.

2. Questions connexes

1. Chaque demande d'utilisateur pour des ressources dynamiques doit-elle déclencher un processus complet d'analyse des ressources dynamiques ?

Non, il existe deux manières de résoudre ce problème :

Tout d'abord, activez la fonction de mise en cache de nginx lui-même pour mettre en cache les résultats de l'analyse des ressources dynamiques. La prochaine fois que l'utilisateur accédera à la ressource correspondante, nginx effectuera cette requête de cache si la requête réussit, la ressource statique après l'analyse de la ressource dynamique. être renvoyé directement aux utilisateurs ;

. Deuxièmement, déployez une machine de cache sur le backend nginx, par exemple en déployant un cluster de cache de vernis pour mettre en cache les ressources. Les ressources demandées par l'utilisateur peuvent d'abord être recherchées sur le cluster de cache

 ; 2. Est-il possible d'utiliser nginx pour la mise en cache ? Selon la situation réelle, si nginx n'est pas un goulot d'étranglement dans l'ensemble de l'architecture Web, nginx peut être utilisé pour la mise en cache, mais cela n'est pas recommandé car nginx est le seul moyen de répondre aux demandes des utilisateurs et aux demandes des utilisateurs. Si nginx apparaît un goulot d'étranglement, quelles que soient les performances des autres composants back-end tels que les clusters de stockage, il n'est pas recommandé d'activer la fonction de mise en cache de nginx dans le déploiement réel (lorsque nginx est utilisé comme serveur http). Parce que l'activation de la fonction de cache nginx réduira les performances de nginx et consommera les ressources matérielles du serveur correspondant sur lequel nginx est déployé.

3. Si vous utilisez une image pour représenter la relation entre nginx fastcgi wrapper php

Comment implémenter le mode daccélération Nginx+PHP+FastCGI

4.Qu'est-ce que fastcgi exactement

CGI signifie Common Gateway Interface Common Gateway Interface

Un outil utilisé pour la communication des services de programme sur les services HTTP doit être exécuté sur le serveur réseau.

La méthode d'interface CGI traditionnelle a des performances médiocres car chaque fois que le serveur HTTP rencontre un programme dynamique, il doit redémarrer l'analyseur pour effectuer l'analyse, puis les résultats sont renvoyés au serveur HTTP. C'est presque impossible lorsqu'il s'agit d'une concurrence élevée, c'est pourquoi FastCGI est né. De plus, la sécurité de la méthode d'interface CGI traditionnelle est également très mauvaise

一个可伸缩地。高速地在HTTP服务器和动态脚本语言间通信的接口

接口在linux下是socket(这个socket可以是文件socket也可以是ip socket)

主要优点把动态语言和HTTP服务器分离开来。多数流行的HTTP服务器都支持FsatCGI包括Apache/Nginx/lighttpd等

支持语言比较流行的是PHP,接口方式采用C/S架构,可以将HTTP服务器和脚本解析器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。

当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。

5.具体的nginx + php的nginx相关配置

[email protected]:/data/web# cat /etc/nginx/nginx.conf|egrep -v "#|^$" user www-data; worker_processes 4; pid /var/run/nginx.pid; events {     worker_connections 768; } http {     sendfile on;     tcp_nopush on;     tcp_nodelay on;     keepalive_timeout 65;     types_hash_max_size 2048;     include /etc/nginx/mime.types;     default_type application/octet-stream;     access_log /var/log/nginx/access.log;     error_log /var/log/nginx/error.log;     gzip on;     gzip_disable "msie6";     include /etc/nginx/conf.d/*.conf;     include /etc/nginx/sites-enabled/*; } [email protected]:/data/web#<br>
Copier après la connexion
[email protected]:/data/web# cat /etc/nginx/conf.d/blog.conf server {     root /data/web/blog/;     index index.html index.htm;     server_name www.fwait.com;     location / {         try_files $uri $uri/ /index.html;     }     location /blog/ {         #alias /usr/share/doc/;         auth_basic "authorized users only";         auth_basic_user_file /etc/nginx/passwd.conf;         #autoindex on;         allow 192.168.1.103;         deny all;     }     location ~ \.php$ {         #include /usr/local/etc/nginx/fastcgi.conf;         include /etc/nginx/fastcgi_params;         fastcgi_intercept_errors on;         fastcgi_pass 127.0.0.1:9000;     } } [email protected]:/data/web#<br>
Copier après la connexion

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.

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)

PHP: Gestion des bases de données et logique côté serveur PHP: Gestion des bases de données et logique côté serveur Apr 15, 2025 am 12:15 AM

PHP utilise les extensions MySQLI et PDO pour interagir dans les opérations de base de données et le traitement de la logique côté serveur, et traite la logique côté serveur via des fonctions telles que la gestion de session. 1) Utilisez MySQLI ou PDO pour vous connecter à la base de données et exécuter les requêtes SQL. 2) Gérer les demandes HTTP et l'état de l'utilisateur via la gestion de session et d'autres fonctions. 3) Utiliser les transactions pour assurer l'atomicité des opérations de base de données. 4) Empêcher l'injection de SQL, utiliser les connexions de gestion des exceptions et de clôture pour le débogage. 5) Optimiser les performances via l'indexation et le cache, écrivez du code très lisible et effectuez une gestion des erreurs.

Objectif de PHP: Construire des sites Web dynamiques Objectif de PHP: Construire des sites Web dynamiques Apr 15, 2025 am 12:18 AM

PHP est utilisé pour créer des sites Web dynamiques, et ses fonctions principales incluent: 1. Générer du contenu dynamique et générer des pages Web en temps réel en se connectant à la base de données; 2. Traiter l'interaction utilisateur et les soumissions de formulaires, vérifier les entrées et répondre aux opérations; 3. Gérer les sessions et l'authentification des utilisateurs pour offrir une expérience personnalisée; 4. Optimiser les performances et suivre les meilleures pratiques pour améliorer l'efficacité et la sécurité du site Web.

Comment configurer le nom de domaine du serveur cloud dans nginx Comment configurer le nom de domaine du serveur cloud dans nginx Apr 14, 2025 pm 12:18 PM

Comment configurer un nom de domaine NGINX sur un serveur cloud: Créez un enregistrement A pointant vers l'adresse IP publique du serveur cloud. Ajoutez des blocs d'hôtes virtuels dans le fichier de configuration Nginx, en spécifiant le port d'écoute, le nom de domaine et le répertoire racine du site Web. Redémarrez Nginx pour appliquer les modifications. Accéder à la configuration du test de nom de domaine. Autres notes: Installez le certificat SSL pour activer HTTPS, assurez-vous que le pare-feu autorise le trafic Port 80 et attendez que la résolution DNS prenne effet.

PHP et Python: exemples de code et comparaison PHP et Python: exemples de code et comparaison Apr 15, 2025 am 12:07 AM

PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des besoins du projet et des préférences personnelles. 1.Php convient au développement rapide et à la maintenance des applications Web à grande échelle. 2. Python domine le domaine de la science des données et de l'apprentissage automatique.

Comment vérifier si Nginx est démarré Comment vérifier si Nginx est démarré Apr 14, 2025 pm 01:03 PM

Comment confirmer si Nginx est démarré: 1. Utilisez la ligne de commande: SystemCTl Status Nginx (Linux / Unix), netStat -ano | Findstr 80 (Windows); 2. Vérifiez si le port 80 est ouvert; 3. Vérifiez le message de démarrage NGINX dans le journal système; 4. Utilisez des outils tiers, tels que Nagios, Zabbix et Icinga.

Comment vérifier la version nginx Comment vérifier la version nginx Apr 14, 2025 am 11:57 AM

Les méthodes qui peuvent interroger la version Nginx sont: utilisez la commande nginx -v; Afficher la directive de version dans le fichier nginx.conf; Ouvrez la page d'erreur Nginx et affichez le titre de la page.

Comment créer un miroir dans Docker Comment créer un miroir dans Docker Apr 15, 2025 am 11:27 AM

Étapes pour créer une image docker: écrivez un dockerfile qui contient les instructions de construction. Créez l'image dans le terminal, en utilisant la commande docker build. Marquez l'image et attribuez des noms et des balises à l'aide de la commande docker tag.

PHP: une introduction au langage des scripts côté serveur PHP: une introduction au langage des scripts côté serveur Apr 16, 2025 am 12:18 AM

PHP est un langage de script côté serveur utilisé pour le développement Web dynamique et les applications côté serveur. 1.Php est un langage interprété qui ne nécessite pas de compilation et convient au développement rapide. 2. Le code PHP est intégré à HTML, ce qui facilite le développement de pages Web. 3. PHP traite la logique côté serveur, génère une sortie HTML et prend en charge l'interaction utilisateur et le traitement des données. 4. PHP peut interagir avec la base de données, traiter la soumission du formulaire et exécuter les tâches côté serveur.

See all articles