# FastCGI 工作原理

URL: https://caijiao.org/nginx/fastcgi-intro
Source: docs/nginx/fastcgi-intro.md
Description: 本节讲解 Nginx 与 FastCGI 的工作原理，包括请求转发、PHP-FPM 处理流程及数据交互方式，帮助你理解 nginx.conf 中动态内容处理机制。

FastCGI 是一种协议，用于将 Web 服务器请求转发给后端应用程序（如 PHP-FPM），实现 Web 与应用分离，提高性能和扩展性。

## 一、Nginx 与 FastCGI 的交互流程

1. 客户端发起 HTTP 请求到 Nginx  
2. Nginx 判断请求类型（如 .php 文件），将请求转发到 FastCGI 服务器（PHP-FPM）  
3. PHP-FPM 处理请求，生成响应数据  
4. FastCGI 将响应返回给 Nginx  
5. Nginx 将响应发送给客户端  

```text
客户端 -> Nginx -> FastCGI (PHP-FPM) -> Nginx -> 客户端
````

## 二、Nginx 配置 FastCGI 示例

```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

## 三、FastCGI 的优势

1. **提高性能**：长连接方式处理请求，避免每次启动 CGI 进程
2. **支持并发**：Nginx 通过 worker 进程可同时处理大量请求
3. **分离应用**：Web 服务器与后端应用解耦，便于扩展与维护

---

理解 FastCGI 工作原理后，你可以更好地配置 Nginx 与 PHP-FPM，实现高性能动态 Web 服务。
