Nginx + PHP 运行原理

转载自:http://blog.csdn.net/u013474436/article/details/52972699

Nginx是什么

Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。php

Nginx如何与Php-fpm结合

Nginx不仅有处理http请求的功能,还能作反向代理。Nginx经过反向代理功能将动态请求转向后端Php-fpm。nginx

下面咱们来配置一个全新的Nginx+Php-fpm后端

一、配置nginx.conf文件

进入nginx目录下,编辑 nginx.conf文件。
如图,在nginx.conf最后一行,添加include文件浏览器

这里写图片描述

二、添加对应的server

进入上面include的路径,添加一个server.服务器

这里写图片描述

下面咱们解释一下配置项的含义:php-fpm

server {
    listen       80; #监听80端口,接收http请求
    server_name  www.example.com; #就是网站地址
    root /usr/local/etc/nginx/www/huxintong_admin; # 准备存放代码工程的路径
    #路由到网站根目录www.example.com时候的处理
    location / {
        index index.php; #跳转到www.example.com/index.php
        autoindex on;
    }   

    #当请求网站下php文件的时候,反向代理到php-fpm
    location ~ \.php$ {
        include /usr/local/etc/nginx/fastcgi.conf; #加载nginx的fastcgi模块
        fastcgi_intercept_errors on;
        fastcgi_pass   127.0.0.1:9000; #nginx fastcgi进程监听的IP地址和端口
    }
}

总而言之:当咱们访问www.example.com的时候,处理流程是这样的:性能

www.example.com
        |
        |
      Nginx
        |
        |
路由到www.example.com/index.php
        |
        |
加载nginx的fast-cgi模块
        |
        |
fast-cgi监听127.0.0.1:9000地址
        |
        |
www.example.com/index.php请求到达127.0.0.1:9000
        |
        |
     等待处理...

下面咱们启用php的php-fpm来处理这个请求网站

打开php-fpm.conf文件,咱们看到以下配置:ui

这里写图片描述

即:php-fpm模块监听127.0.0.1:9000端口,等待请求到来去处理。spa

4、总结

nginx与php-fpm的结合,完整的流程是这样的。

www.example.com
        |
        |
      Nginx
        |
        |
路由到www.example.com/index.php
        |
        |
加载nginx的fast-cgi模块
        |
        |
fast-cgi监听127.0.0.1:9000地址
        |
        |
www.example.com/index.php请求到达127.0.0.1:9000
        |
        |
php-fpm 监听127.0.0.1:9000
        |
        |
php-fpm 接收到请求,启用worker进程处理请求
        |
        |
php-fpm 处理完请求,返回给nginx
        |
        |
nginx将结果经过http返回给浏览器

5、效果展现

一、启动nginx与php-fpm模块

这里写图片描述

启动成功,咱们查看php-fpm进程

这里写图片描述

如上图,有一个master进程,3个worker进程。

二、在网站目录下创建文件

咱们编辑文件以下图:

这里写图片描述

三、访问网站

这里写图片描述