摘 要 这个模块允许 Nginx 与 FastCGI 进程交互,并通过传递参数来控制 FastCGI 进程工作。 配置实例: ``` location / { fastcgi_pass localhost:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; } ``` 语法: ``` fastcgi_buffers syntax: fastcgi_buffers the_number is_size; default: fastcgi_buffers 84k/8k; context: http, server, location ``` 该指令集设置缓冲区的数量和大小,用于缓存从 FastCGI Server 接收到的数据。默认情况下,一个缓冲区的大小相当于一个页面的大小。根据平台的不同设置为4K/8K ``` fastcgi_buffer_size ``` 语法: fastcgi_buffer_size 大小 默认: fastcgi_buffer_size 4k / 8k 环境: http, server, location 该命令设置缓冲区大小,其中将读取第一部分的输出,从 fastcgi 服务端获取 在这个输出的小输出标头部分的位置,作为一项规则 默认情况下,缓冲区大小是等于一个 fastcgi 缓冲区大小,允许将其设置为更少 ``` fastcgi_cache syntax: fastcgi_cache zone; default: none context: http, server, location ``` 设置缓存在共享内存中的名称. 一块区域可以被用于不用的地方. ``` fastcgi_cache_key syntax: fastcgi_cache_key line ; default: none context: http, server, location ``` 设置缓存的 key , 例: ``` fastcgi_cache_key localhost: 9000 $ request_uri; fastcgi_cache_methods ``` 语法: fastcgi_cache_methods [GET HEAD POST]; 默认: fastcgi_cache_methods GET HEAD; 环境: main, http, location GET / HEAD 语法糖, 也就是. 即使你刚刚设置,也无法禁用 GET / HEAD ``` fastcgi_cache_methods POST; fastcgi_cache_min_uses syntax: fastcgi_cache_min_uses n default: fastcgi_cache_min_uses 1 context: http, server, location TODO: Description. fastcgi_cache_path syntax: fastcgi_cache_path /path/to/cache [levels=m:n keys_zone=name:time inactive=time clean_time=time] default: none context: http, server, location TODO: Description. fastcgi_cache_use_stale syntax: fastcgi_cache_use_stale [updating|error|timeout|invalid_header|http_500] default: fastcgi_cache_use_stale off; context: http, server, location TODO: Description. fastcgi_cache_valid syntax: fastcgi_cache_valid [http_error_code|time] default: none context: http, server, location TODO: Description. fastcgi_index syntax: fastcgi_index file default: none context: http, server, location The name of the file which will be appended to the URI and stored in the variable $fastcgi_script_name if URI concludes with a slash. fastcgi_hide_header syntax: fastcgi_hide_header name context: http, server, location ``` 默认情况下Nginx 不会从FastCGI 进程里给客户端发送"Status" 和"X-Accel-..." 消息头。这个指令可以用来掩饰别的headers 。 如果需要"Status" 和"X-Accel-..." 消息头,那就需要使用这个指令让FastCGI 强制发送消息头给客户端。 ``` fastcgi_ignore_client_abort syntax: fastcgi_ignore_client_abort on|off default: fastcgi_ignore_client_abort off context: http, server, location ``` 这个指令用来决定忽略用户取消的请求。 ``` fastcgi_intercept_errors syntax: fastcgi_intercept_errors on|off default: fastcgi_intercept_errors off context: http, server, location ``` 这个指令用来决定是否要把客户端转向4xx和5xx错误页,或允许Nginx自动指定错误页页。 注意:你需要在此明确错误页,它才是有用的。Igor 曾说:“如果没有定制的处理机制,Nginx不会拦截一个没有缺省页的错误。Nginx 只会拦截一些小的错误,放过其他一些。 ``` fastcgi_param syntax: fastcgi_param parameter value default: none context: http, server, location ``` 该指令指定的参数,将被传递给FastCGI-server。 它可能使用字符串、变量及其它们的组合来作为参数值。如果不在此制定参数,它就会继承外层设置;如果在此设置了参数,将清除外层相关设置,仅启用本层设置。 下面是一个例子,对于PHP来说的最精简的必要参数: ``` fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; ``` 参数SCRIPT_FILENAME 是PHP 用来确定执行脚本的名字,而参数QUERY_STRING 是它的一个子参数。 如果要处理POST,那么这三个附加参数是必要的: ``` fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; ``` 如果PHP 在编译时使用了--enable-force-cgi-redirect选项,设置参数REDIRECT_STATUS 的值为200就是必须的了。 ``` fastcgi_param REDIRECT_STATUS 200; ```