LNMP中 Nginx 与 PHP 的协同机制核心架构与角色Nginx:高性能的 HTTP 服务器/反向代理,擅长处理静态资源(如 .html/.css/.js/.jpg),对 .php 等动态请求不直接执行,而是通过 FastCGI 协议转发给后端处理器。PHP-FPM(FastCGI Process Manager):PHP 的 FastCGI 进程管理器,采用 master/worker 多进程模型,负责接收 Nginx 转发的请求、调用 PHP 解释器执行脚本、回收资源。通信协议:Nginx 的
在典型的LNMP架构中,各个组件各司其职,共同构建起一个高效稳定的动态网站运行环境。
让我们跟踪一次典型的动态请求,看看各个组件是如何协同工作的:
通信方式对比
| 方式 | 典型配置 | 适用场景 | 主要特点 |
|---|---|---|---|
| TCP Socket | php-fpm: listen = 127.0.0.1:9000;Nginx: fastcgi_pass 127.0.0.1:9000; |
同机或跨机部署 | 通用性强、可跨主机通信;经过loopback/TCP协议栈,开销稍大 |
| Unix Domain Socket | php-fpm: listen = /tmp/php-fpm.sock;Nginx: fastcgi_pass unix:/tmp/php-fpm.sock; |
仅同机部署 | 不经过网络协议栈,通信开销更小;需要正确设置socket文件权限 |
关键Nginx配置要点
location ~ \.php$用于捕获.php请求,使用fastcgi_pass指定PHP-FPM的监听地址fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;,否则PHP-FPM会找不到需要执行的脚本fastcgi_param HTTPS on;(当反向代理或TLS终止在Nginx时)最小可用示例
server {
listen 80;
server_name app.test;
root /code/public;
index index.php;
location / {
try_files $uri $uri/ /index.php$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000; # 或 unix:/tmp/php-fpm.sock;
}
}
权限与安全(Unix Socket)
listen.owner = www; listen.group = www; listen.mode = 0660;fastcgi_connect/read/send_timeout)小于PHP-FPM脚本的实际执行时间时发生侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述