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>
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
一个可伸缩地。高速地在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>
[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>
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!