首页 > 代码库 > PHP+FastCGI+Nginx动态请求处理配置

PHP+FastCGI+Nginx动态请求处理配置


         Nginx不支持对外部程序的调用,所以必须通过FastCGI接口实现对外部程序的调用从而实现对client动态页面请求的处理。

      CGI的英文全称为Common Gateway Interface(公共网关接口),是Nginx和动态脚本程序的桥梁。Nginx通过FastCGI接口将动态请求发送给FastCGI,FastCGI中的Wrapper进程生成一个线程。将请求交给脚本解释程序运行,然后通过原来的socket将解释运行后的结果原路返回给Nginx,之后Nginx将结果交给client。

    Nginx是通过套接字文件socket来将动态请求发送给wrapper,使用的是Tcp协议。wrapper通过CGI接口来接受请求。这样webserver和解释程序之间全然能够独立开发,这样避免了解释程序直接调用server的接口而导致的出错和崩溃以及安全性问题。并且能够使Nginx专心处理静态页面请求和转发动态请求。而将脚本解释器安装在还有一台server,使server的压力得到分摊。


       CGI是作为PHP程序的补丁开发的,安装PHP首先安装其所依赖的库,之后在编译配置參数时增加对CGI的支持--enable-fpm --enable-cgi等选项。编译PHP的扩展模块。须要用到php中的phpize工具用来生成模块编译时的configure文件。假设执行phpize时无法生成configure文件,原因有:没有安装autoconf软件包。

       php-fpm进程的配置文件为/usr/local/php/etc/php-fpm.conf  能够对php-fpm进行对应的配置。

      Nginx配置支持fastcgi:

                  location  ~ \.php${

                          root  html;

                         fastcgi_pass   unix:/tmp/fastcgi.soke   //通过套接字文件和cgi建立联系,该文件在php-fpm.conf中设置

                         fastcgi_index  index.php;

                         fastcgi_param  SCRIPT_FILENAME  html$SCRIPT_FILE_NAME;设置參数

                         include fastcgi_params;  //导入fastcgi參数配置文件。该文件在nginx安装时自己主动生成。

                                      }


PHP+FastCGI+Nginx动态请求处理配置