# FastCGI 参数详解

URL: https://caijiao.org/nginx/fastcgi-params
Source: docs/nginx/fastcgi-params.md
Description: 本节详细讲解 Nginx 与 FastCGI 配合时的参数配置，包括 fastcgi_param 指令、标准参数与自定义参数，帮助你精确控制 PHP-FPM 请求与响应。

FastCGI 参数是 Nginx 将请求信息传递给 PHP-FPM 或其他 FastCGI 服务的关键配置，通过合理设置可以保证动态请求正确处理。

## 一、标准 fastcgi_param

Nginx 官方提供了 `fastcgi_params` 文件，常见参数如下：

| 指令 | 说明 |
|------|------|
| `SCRIPT_FILENAME` | 请求脚本完整路径 |
| `QUERY_STRING` | 请求查询字符串 |
| `REQUEST_METHOD` | HTTP 请求方法 |
| `CONTENT_TYPE` | 请求内容类型 |
| `CONTENT_LENGTH` | 请求内容长度 |
| `SCRIPT_NAME` | 脚本名称 |
| `REQUEST_URI` | 请求 URI |
| `DOCUMENT_URI` | 当前请求文档 URI |
| `DOCUMENT_ROOT` | 请求根目录 |
| `SERVER_PROTOCOL` | HTTP 协议版本 |
| `GATEWAY_INTERFACE` | CGI 版本信息 |
| `SERVER_SOFTWARE` | Nginx 版本信息 |
| `REMOTE_ADDR` | 客户端 IP |
| `REMOTE_PORT` | 客户端端口 |
| `SERVER_ADDR` | 服务器 IP |
| `SERVER_PORT` | 服务器端口 |
| `SERVER_NAME` | 服务器名称 |

## 二、常用 fastcgi_param 配置示例

```nginx
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;
    fastcgi_param PHP_VALUE "open_basedir=/var/www/html";
}
````

### 说明

* **SCRIPT_FILENAME**：必需，指定 PHP-FPM 执行脚本路径
* **fastcgi_param PHP_VALUE**：可设置 PHP 配置参数，如 `open_basedir`、`upload_max_filesize` 等
* 其他参数可通过 `include fastcgi_params` 自动加载，确保 PHP-FPM 正确识别请求信息

## 三、自定义 FastCGI 参数

可以根据业务需求自定义参数传递给后端应用：

```nginx
fastcgi_param CUSTOM_VAR "my_custom_value";
```

PHP 中通过 `$_SERVER['CUSTOM_VAR']` 获取该值。

---

掌握 FastCGI 参数详解，能够精确控制 Nginx 与 PHP-FPM 之间的请求传递与处理，确保动态请求稳定高效。
