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
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发来的请求给予解析,也需要修改。