正在理解中,查阅资料,加上自我理解,得出如下结论,如有错误,欢迎指正。。。。

LNP环境,Nginx与PHP配合运行的原理解释:

以前的互联网时代我们成为web1.0时代,那时用户是被动接受网络信息,服务器上有什么你就看什么,你不能往服务器上传东西,并且主要以静态文件为主,几乎没有动态程序,所以Nginx处理起来很轻松。但是随着祖国的强大,时代和技术的进步,web2.0时代来临,用户为主,动态语言也流行了起来,例如php、java等,所以网络上动态请求就多了起来,但是Nginx有不能处理动态请求,所以随之而来的动态程序解析器就应运而生了,PHP的解析器,Java的解析器等,但是问题来了,Nginx怎么把接受到的动态请求交给解析器呢?解析器处理之后又怎么返回给Nginx呢?所以出现了CGI(common gateway interface)通用网关接口,通过这个接口实现两者之间的通信,怎么通信呢?

CGI的特点是,每接到一个请求就启动解析器,fork一个进程来解析,完成之后呢就把这个进程kill掉,每次都是这样,可想而知,不仅浪费系统资源,还无法处理高并发的请求,满足不了web2.0时代的广大网友。所以FASTCGI出来了,一看名字就比较快,他fork进程之后不kill,保留下来以便下次使用,效率就高了许多。

接着讲Nginx怎么通过这个接口实现通信,Nginx有一个fastcgi模块,Nginx通过fastcgi监听PHP程序运行的地址和端口,当有动态程序访问Nginx时,Nginx通过fastcgi_pass抛给PHP处理,PHP处理完成后通过FASTCGI接口返回给Nginx,然后Nginx返回给用户。那么PHP又是怎么处理的呢?

php收到Nginx抛过来的动态程序时,首先是php-fpm(php fastcgi process manager)php fastcgi 进程管理接收到,然后他会调用一个wrapper线程去激活php解析器,把动态请求解析为op code(操作码)进行处理,之后把处理结果返回给php-fpm,一路返回给用户。

LNP环境下Nginx与PHP配合解析的原理的更多相关文章

  1. 搭建windows环境下(nginx+mysql+php)开发环境

    搭建windows环境下(nginx+mysql+php)开发环境   1. 所需准备应用程序包        1.1 nginx 程序包nginx-1.0.4.zip或其他版本(下载地址: http ...

  2. Windows10环境下 Nginx+ffmpeg自搭服务器制作RTMP直播流

    Windows10环境下 Nginx+ffmpeg自搭服务器制作RTMP直播流学习笔记 所需条件: nginx-rtmp-module(带rtmp模块) ,链接:https://link.jiansh ...

  3. windows 环境下nginx + tomcat群 + redis 实现session共享

    nginx作为负载均衡根据定义将不同的用户请求分发到不同的服务器,同时也解决了因单点部署服务器故障导致的整个应用不能访问的问题 在加入nginx之后,如果多个服务器中的一个或多个(不是全部)发生故障, ...

  4. virtualenv 环境下 Nginx + Flask + Gunicorn+ Supervisor 搭建 Python Web

    在这篇文章里,我们将搭建一个简单的 Web 应用,在虚拟环境中基于 Flask 框架,用 Gunicorn 做 wsgi 容器,用 Supervisor 管理进程,然后使用 Python 探针来监测应 ...

  5. ubuntu环境下nginx的编译安装以及相关设置

    一.基本的编译与安装 1.安装依赖项 sudo apt-get update sudo apt-get install build-essential zlib1g-dev libpcre3 libp ...

  6. linux环境下Nginx的安装

    因为工作环境大多数都是windows server服务器,仅有的linux服务器同事们都在抢着用,所以特意买了一台阿里云服务器,感兴趣的小伙伴可以了解一下,一年只要293: https://promo ...

  7. windows环境下nginx的启动、停止

    Windows下Nginx的启动.停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍.1.启 ...

  8. 记一次虚拟化环境下Windows IO性能的解析

    前言随着云计算技术与服务的发展和进步,越来越多的客户选择将业务部署到云端.但由于引入了虚拟化层,在业务部署过程中经常会遇到IO问题,通常也不易调试.本文主要介绍利用perf.systemtap等工具, ...

  9. 在windows环境下 nginx + .net core 3.1 实现反向代理和负载均衡

    一.创建.net core web 应用 1.首先打开vs2019创建好.net core web应用,简单的注入IConfiguration 便于打印端口号展示效果. 1 private reado ...

随机推荐

  1. noip第9课资料

  2. codeforce868c

    C. Qualification Rounds time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  3. DOS和批处理基本命令

    http://www.cnblogs.com/leizhao/archive/2013/03/07/2949026.html 1.rem和:: rem注释命令,该命令后的内容不被执行,但能回显 ::注 ...

  4. unigui验证微信服务器的有效性

    UNIGUI验证微信服务器的有效性: //////////////////////////////////////////// //UniGUIServerModuleHTTPCommand //公众 ...

  5. apollo broker 启动流程

    1.下载Apollo服务器,下载后解压,然后运行apache-apollo-1.6\bin\apollo.cmd,输入create mybroker(名字任意取,这里是根据官网介绍的来取的)创建服务器 ...

  6. mysql rand

    在where语句中,rand有时候会出现多条记录

  7. asp.net 增加404页面(非302、200)

    由于项目改版,导致产生了许多死链,但是之前的404页面都是在Application_Error中Response.Redicet()到404页面,但是这样子是302跳转,导致搜索引擎认为网页不是死链而 ...

  8. c# 数据写入三菱PLC

    public void Data_Write_Value(int[] m_write_data)        {            int lSize = 2; string[] Address ...

  9. MVC框架json数据展示程序(第一版)

    模型原型:服务器的配置和运行状态信息. 设计要求:Json格式数据解析后,判断配置信息是否是新数据或者是否更新.如是新数据,则直接添加到数据库:若是数据更新,则更新数据库配置信息并更新运行状态信息:都 ...

  10. 一个docker容器中运行多个服务还是弄一堆docker容器运行?

    不建议直接在单个 Docker 容器中运行多个程序. 以 2017年 10 月18 日 Docker 官方支持 Kubernetes 为分水岭计算,Kubernetes 赢得容器编排之战的最终胜利已经 ...