nginx是一个web服务器,它能处理静态文件的访问请求而没有办法解析对动态程序语言(比如PHP语言的程序)的请求,目前流行的web架构lnmp其中n就是指nginx,p就代表php,我们这里就讲一下nginx到底怎么配置php到能实现处理php的访问请求。
nginx本身不能解释PHP语言,但是nginx可以通过fastcgi接口来调用,PHP本身就有一个fastcgi的管理器叫(php-fpm),它是PHP的一个补丁(php5.3.3以后已经集成到PHP中了,无需另行安装,不再是一个独立的补丁)。
php5.3.3以前安装php-fpm:
yum -y install php-fpm将php-fpm加入到系统启动项:
chkconfig php-fpm on
启动、停止或重启php-fpm:
/etc/init.d/php-fpm [start|stop|restart] 或 service php-fpm [start|stop|restart]
启动php-fpm之后
安装好php-fpm之后,就可以配置nginx,让nginx把所有的php请求转发到php-fpm让fastcgi来处理,nginx配置php的配置段应放到server{}配置段里面:
location ~ .*\.(php|php5)?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; }
location配置的是所有php和php5格式的文件都交给fastcgi去处理,php-fpm管理的fastcgi侦听的端口是9000(该端口可以在php-fpm配置文件中可以修改)。
fastcgi_pass指定的是fastcgi服务器的地址和端口,这个地址可以是本机也可以是其它。
fastcgi_pass可以直接指胆地址和端口、可以指向unix socket、也可以是nginx配置的upstream名称:
直接使用端口和地址:
fastcgi_pass 127.0.0.1:9000;使用unix socket:
fastcgi_pass unix:/tmp/fastcgi.socket;使用定义的upstream名称:
fastcgi_pass phpjiayuan; upstream phpjiayuan{ server localhost:1234; }