zoukankan      html  css  js  c++  java
  • nginx如何解析php?

    nginx本身不支持对外部程序的直接调用或者解析,所有的外部程序包括php必须通过FastCGI接口来调用(FastCGI接口在Linux下是socket)
    为了调用CGI程序,还需要FastCGI的wrapper,当nginx将cgi请求发送给这个socket的时候,通过fastcgi接口,wrapper接收到请求,然后派生出一个线程,这个线程调用外部程序处理并返回数据;
    接着,wrapper再将返回的数据通过fastcgi接口,socket传递给nginx;
    最后,nginx将返回的数据发送给客户端

    一、Nginx解析PHP

    PHP-FRM是管理FastCGI的一个管理器

    1.php-frm自身初始化,启动进程php-frm,监听9000端口;FastCGI子进程等待来自web服务器的连接

    2.当客户端request到达nginx时,nginx通过location指令,将所有以.php结尾的文件都交给127.0.0.1:9000(本地php解析服务器)进行处理

            location ~ .php$ {
                root           html;
                fastcgi_pass   127.0.0.1:9000;  #表示nginx通过fastcgi_pass将用户请求的资源发给9000端口进行解析
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  #脚本文件请求的路径
                include        fastcgi.conf;  #表示nginx会调用fastcgi.conf这个配置文件
            }
    

    ngx_http_fastcgi_module

    3.nginx将请求fastcgi客户端,通过fastcgi_pass将用户的请求发送给php-fpm

    4.wrapper收到php-fpm的请求后,会生成一个新的线程调用php动态程序解析服务器(如果请求是mysql数据的读取,将会触发读库操作,如果是图片、文件等,将会触发查询后端存储服务器)

    5.php将查询到的结果通过fastcgi返回给nginx

    6.nginx将数据返回给用户

    二、如何配置nginx支持php

    1.在编译安装时添加--enable-fpm 参数即可开启php-fpm

    ./configure --prefix=/usr/local/php/  …… --enable-fpm
    

    2.生成php-fpm的配置文件,并修改参数

    #cd /usr/local/php/etc/
    cp -a php-fpm.conf.default php-fpm.conf
    #vim php-fpm.conf
    pid = run/php-fpm.pid
    #取消注释
    user = nginx
    group = nginx
    pm.start_servers = 2
    #启动时开启的进程数(默认值)
    pm.min_spare_servers = 1
    #最少空闲进程数(默认值)
    pm.max_spare_servers = 3
    #最多空闲进程数(默认值)
    

    2.修改nginx的配置文件,使其识别.php后缀的

    #vim /usr/local/nginx/conf/nginx.conf
    #取消以下几行的注释,并修改include选项的后缀位fastcgi.conf
    #65行-71行
            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;
            } 
    
    作者:ccku
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。
  • 相关阅读:
    设置ImageView圆角
    GitHub-引导页
    GitHub-特效
    TextView总汇
    【笔记8-Redis分布式锁】从0开始 独立完成企业级Java电商网站开发(服务端)
    【笔记7-部署发布】从0开始 独立完成企业级Java电商网站开发(服务端)
    【笔记6-支付及订单模块】从0开始 独立完成企业级Java电商网站开发(服务端)
    【笔记5-购物车及地址模块】从0开始 独立完成企业级Java电商网站开发(服务端)
    【笔记4-商品模块】从0开始 独立完成企业级Java电商网站开发(服务端)
    【笔记3-用户模块】从0开始 独立完成企业级Java电商网站开发(服务端)
  • 原文地址:https://www.cnblogs.com/ccku/p/13531551.html
Copyright © 2011-2022 走看看