教程 nginx tutorial

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:9000

Nginx 可以通过 TCP 或 Unix Socket 与 PHP-FPM 通信。

三、处理请求流程

  1. 客户端访问 PHP 页面
  2. Nginx 匹配 location ~ .php$
  3. 转发请求到 PHP-FPM 池
  4. PHP-FPM 处理脚本并生成响应
  5. Nginx 返回响应给客户端

四、安全与优化建议

  1. 禁止直接访问 PHP 配置文件、日志文件等敏感资源
  2. 使用 Unix Socket 提升性能并限制访问
  3. 设置 PHP-FPM 池用户与组为 Nginx 进程用户
  4. 开启 opcode 缓存(如 Opcache)提高 PHP 性能
  5. 对静态文件由 Nginx 直接处理,减少 PHP-FPM 负载

通过合理配置 Nginx 与 PHP-FPM 集成,可以实现高性能、稳定且安全的 PHP Web 服务,是动态网站部署的标准做法。