nginx动态文件处理(NGINX+FASTCGI配置)

时间:2022-10-27 22:34:26

1. nginx动态文件处理

nginx只是一个web服务器,本身没有apache那么强大的功能,通常支持各种模块来实现支持多种功能。Nginx本身只能处理静态页的解析,如果要解析动态页面的话,需要用到反向代理的功能。就是说,把php等动态页面请求转发给后端其它web主机处理(例如:tomcat/iis/apache)。如果访问量比较大的情况下。需要用到nginx负载均衡的架构。

通常转发给后端有两种情况:(php页面的情况):

(1)反向代理
(2)fastcgi

注意:反向代理的后端是web服务器,而fastcgi是实现php的解析程序。
我们先来聊一聊转发给后端的第二种情况,nginx将php页面请求转发给fastcgi程序,这个fastcgi也可以是另一台主机。
2、fastcgi支持
nginx与fastcgi在同一台电脑:
注:配置文件中有相关默认示例,只需要打开相关的注释就可以实现php页面的解析了。以下示例只是应用于nginx与fastcgi安装在同一台电脑的情况,

location ~ \.php$ {
   root           html;
   fastcgi_pass   127.0.0.1:9000;
   fastcgi_index  index.php;
   #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
   include        fcgi.conf;
}

通过FastCGI方式支持PHP,php页面由fastcgi代理处理,这也是反向代理的一个应用,这里可以是jsp/asp等脚本。(fastcgiserver)

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }

(1)修改nginx.conf文件如下:
location ~ .php {     root           html;     fastcgi_pass   192.168.129.22:9000;     fastcgi_index  index.php;     fastcgi_param  SCRIPT_FILENAME  /opt/www/ fastcgi_script_name;
include fcgi.conf;
}
两处说明:一个是访问nginx,nginx把请求转发到fastcgi处理,但是php页面又是在fastcgi那台机器上的/opt/www目录中,所以需要修改以上两个地方才能实现php页面的解析。
(2)修改/usr/local/php/etc/php-fpm.conf文件
注:在安装fastcgi主机上:
192.168.129.22:9000
192.168.129.21
说明:
第一处监听本机的9000端口,默认是127.0.0.1,由于是分布式应用,需要修改。
第二处只允许nginx发来的请求给予解析,也需要修改。