主题
Nginx 与 PHP-FPM 集成
Nginx 与 PHP-FPM 集成可以高效处理动态 PHP 请求,实现 Web 与应用分离,提高网站性能与可维护性。
一、配置 FastCGI 转发
在 server/location 块中配置 .php 文件处理:
nginx
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}核心指令说明
- include fastcgi_params:加载标准 FastCGI 参数
- fastcgi_pass:指定 PHP-FPM 监听地址或 Unix Socket
- fastcgi_index:默认 PHP 文件
- fastcgi_param SCRIPT_FILENAME:传递完整脚本路径
二、PHP-FPM 池匹配
确保 Nginx fastcgi_pass 地址与 PHP-FPM 池监听地址一致,例如:
ini
; /etc/php-fpm.d/www.conf
listen = 127.0.0.1:9000Nginx 可以通过 TCP 或 Unix Socket 与 PHP-FPM 通信。
三、处理请求流程
- 客户端访问 PHP 页面
- Nginx 匹配 location ~ .php$
- 转发请求到 PHP-FPM 池
- PHP-FPM 处理脚本并生成响应
- Nginx 返回响应给客户端
四、安全与优化建议
- 禁止直接访问 PHP 配置文件、日志文件等敏感资源
- 使用 Unix Socket 提升性能并限制访问
- 设置 PHP-FPM 池用户与组为 Nginx 进程用户
- 开启 opcode 缓存(如 Opcache)提高 PHP 性能
- 对静态文件由 Nginx 直接处理,减少 PHP-FPM 负载
通过合理配置 Nginx 与 PHP-FPM 集成,可以实现高性能、稳定且安全的 PHP Web 服务,是动态网站部署的标准做法。