网站地图

nginx配置PHP

创建时间:2014-03-20 00:18:14最后修改:2014-03-20 00:31:52

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;
}