LNP环境下Nginx与PHP配合解析的原理
正在理解中,查阅资料,加上自我理解,得出如下结论,如有错误,欢迎指正。。。。
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配合解析的原理的更多相关文章
- 搭建windows环境下(nginx+mysql+php)开发环境
搭建windows环境下(nginx+mysql+php)开发环境 1. 所需准备应用程序包 1.1 nginx 程序包nginx-1.0.4.zip或其他版本(下载地址: http ...
- Windows10环境下 Nginx+ffmpeg自搭服务器制作RTMP直播流
Windows10环境下 Nginx+ffmpeg自搭服务器制作RTMP直播流学习笔记 所需条件: nginx-rtmp-module(带rtmp模块) ,链接:https://link.jiansh ...
- windows 环境下nginx + tomcat群 + redis 实现session共享
nginx作为负载均衡根据定义将不同的用户请求分发到不同的服务器,同时也解决了因单点部署服务器故障导致的整个应用不能访问的问题 在加入nginx之后,如果多个服务器中的一个或多个(不是全部)发生故障, ...
- virtualenv 环境下 Nginx + Flask + Gunicorn+ Supervisor 搭建 Python Web
在这篇文章里,我们将搭建一个简单的 Web 应用,在虚拟环境中基于 Flask 框架,用 Gunicorn 做 wsgi 容器,用 Supervisor 管理进程,然后使用 Python 探针来监测应 ...
- ubuntu环境下nginx的编译安装以及相关设置
一.基本的编译与安装 1.安装依赖项 sudo apt-get update sudo apt-get install build-essential zlib1g-dev libpcre3 libp ...
- linux环境下Nginx的安装
因为工作环境大多数都是windows server服务器,仅有的linux服务器同事们都在抢着用,所以特意买了一台阿里云服务器,感兴趣的小伙伴可以了解一下,一年只要293: https://promo ...
- windows环境下nginx的启动、停止
Windows下Nginx的启动.停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍.1.启 ...
- 记一次虚拟化环境下Windows IO性能的解析
前言随着云计算技术与服务的发展和进步,越来越多的客户选择将业务部署到云端.但由于引入了虚拟化层,在业务部署过程中经常会遇到IO问题,通常也不易调试.本文主要介绍利用perf.systemtap等工具, ...
- 在windows环境下 nginx + .net core 3.1 实现反向代理和负载均衡
一.创建.net core web 应用 1.首先打开vs2019创建好.net core web应用,简单的注入IConfiguration 便于打印端口号展示效果. 1 private reado ...
随机推荐
- Codeforces Round #540 (Div. 3)--1118F1 - Tree Cutting (Easy Version)
https://codeforces.com/contest/1118/problem/F1 #include<bits/stdc++.h> using namespace std; in ...
- POJ3169--Layout(SPFA+差分系统)
Description Like everyone else, cows like to stand close to their friends when queuing for feed. FJ ...
- 比较两个Excle表格的修改内容
//输入参数为文件输入流public static Map<String, List<String>> excelColumn2maplist(InputStream is){ ...
- 查找对端mac地址
1.ping对端mac: 2.arp命令查找:
- iOS AppIcon尺寸
如果提交的ipa包中,未包含必要的Icon就会收到类似的通知,为什么偏偏是Icon-76呢? 因为我们开发的游戏,默认是支持iphone以及ipad的,根据官方提供的参考 Icon-76.png是必须 ...
- Maven 集成Tomcat7插件
Maven已经是Java的项目管理标配,如何在JavaEE开发使用Maven调用Web应用,是很多同学关心的问题.本文将介绍,Maven如何介绍Tomcat插件. Maven Tomcat插件现在主要 ...
- Redis-HA高可用方案Sentinel配置
上一节中介绍了master-slave模式,在最小配置:master.slave各一个节点的情况下,不管是master还是slave down掉一个,“完整的”读/写功能都将受影响,这在生产环境中显然 ...
- 背水一战 Windows 10 (51) - 控件(集合类): ItemsControl - 项模板选择器, 数据分组
[源码下载] 背水一战 Windows 10 (51) - 控件(集合类): ItemsControl - 项模板选择器, 数据分组 作者:webabcd 介绍背水一战 Windows 10 之 控件 ...
- 31_网络编程-struct
一.struct 1.简述 我们可以借助一个模块,这个模块可以把要发送的数据长度转换成固定长度的字节.这样客户端每次接收消息之前只要先接受这个固定长度字节的内容看一看接下来要接收的信息大小,那么 ...
- 带你走进二进制-一次APT攻击分析
原文:https://osandamalith.com/2017/06/04/apt-attack-in-bangladesh/ 由prison翻译整理,首发i春秋 引言; 这是一次来自遥远国 ...