Nginx FastCGI 模块配置详细说明

Nginx 的 FastCGI 模块用于与 FastCGI 服务器(如 PHP-FPM)通信,处理动态内容请求。以下是配置的详细说明:

1. 基本配置

  • fastcgi_pass:指定 FastCGI 服务器的地址,可以是 IP:Port 或 Unix 套接字。

  • fastcgi_param:设置传递给 FastCGI 服务器的参数。

2. 常用参数

  • fastcgi_index:指定默认的索引文件。

  • fastcgi_split_path_info:用于分割路径信息。

  • fastcgi_buffer_size:设置缓冲区大小。

  • fastcgi_buffers:设置缓冲区的数量和大小。

  • fastcgi_busy_buffers_size:设置忙碌缓冲区的大小。

  • fastcgi_temp_file_write_size:设置临时文件写入大小。

  • fastcgi_connect_timeout:设置连接超时时间。

  • fastcgi_send_timeout:设置发送超时时间。

  • fastcgi_read_timeout:设置读取超时时间。

3. 示例配置

server {
    listen 80;
    server_name example.com;

    root /var/www/html;
    index index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 60;
        fastcgi_read_timeout 60;
    }
}

案例

假设你有一个 PHP 应用,使用 PHP-FPM 作为 FastCGI 服务器,Nginx 作为 Web 服务器。以下是一个完整的配置示例:

server {
    listen 80;
    server_name myapp.com;

    root /var/www/myapp;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 60;
        fastcgi_read_timeout 60;
    }

    location ~ /\.ht {
        deny all;
    }
}

解释

  • fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;:指定 PHP-FPM 的 Unix 套接字路径。

  • fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;:设置脚本文件名参数。

  • fastcgi_param PATH_INFO $fastcgi_path_info;:设置路径信息参数。

通过以上配置,Nginx 可以将 PHP 请求转发给 PHP-FPM 处理,并返回处理结果。

本篇文章内容来源于:NginxFastCGI模块配置详细说明以及案例