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,一路返回给用户。

原文地址:https://www.cnblogs.com/chai-/p/9503104.html

时间: 2024-10-10 06:53:49

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

lnmp环境下 nginx.conf的常见配置

做个lnmp环境下 nginx.conf的常见配置说明 vim /usr/local/nginx/conf/nginx.conf 使用如下配置 user  nobody nobody;   //nginx子进程的用户 worker_processes 2;    //nginx子进程个数 error_log /usr/local/nginx/logs/nginx_error.log debug; //错误日志路径及日志级别 debug调试用内容最详细 .一般用crit pid /usr/loca

linux环境下Nginx的安装、配置及使用

因为工作环境大多数都是windows server服务器,仅有的linux服务器同事们都在抢着用,所以特意买了一台阿里云服务器,感兴趣的小伙伴可以了解一下,一年只要293: https://promotion.aliyun.com/ntms/act/qwbk.html?userCode=tmy8r0z0 系统版本:CentOS7.4 64位  当我吭哧吭哧安装好nginx可以正常访问之后,手贱输入了yum install nginx然后发现居然可以这样下载安装!!!只是安装的版本是1.12.2,

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

前言随着云计算技术与服务的发展和进步,越来越多的客户选择将业务部署到云端.但由于引入了虚拟化层,在业务部署过程中经常会遇到IO问题,通常也不易调试.本文主要介绍利用perf.systemtap等工具,帮助一位托管云客户调试IO性能问题,来分析虚拟环境下Windows IO的性能. 问题出现有一次,托管云客户自己搭建了虚拟化环境,在同一台宿主机上创建windows 2008 R2 和 Centos6.5虚拟机,用fio分别测试其随机读性能,windows 2008 R2的IOPS大约在18K,而L

linux环境下nginx链接不上fpm

背景: nginx是通过源码安装,php环境和php-fpm是通过apt-get自动安装. 以下记录下出现的几个问题及方法 一.访问php文件无法识别 安装nginx和fpm完成之后,通过在nginx的容器中添加一个php的测试页面为test.php,代码只写 <?phpphpinfo();?> 其中通过页面访问方式如图所示 解决办法: 找到nginx的安装路径,找到nginx.conf,每个人的nginx安装目录位置不一样,我的nginx.conf在/usr/local/nginx/conf

LNMP环境下nginx、php-fpm的配置文件讲解

一.nginx配置文件 user nobody nobody; worker_processes 2; error_log /usr/local/nginx/logs/nginx_error.log crit; pid /usr/local/nginx/logs/nginx.pid; worker_rlimit_nofile 51200; events {     use epoll;     worker_connections 6000; } http {     include mime.

centos环境下nginx安装及使用

目录结构如下 一.安装pcre,rewrite模块依赖pcre库,下载地址 进入文件目录下执行以下命令 ./configure makesudo make install 注意:需要下载pcre,而不是pcre2,否则编译nginx的时候,会失败. 二.安装zlib,gzip模块依赖zlib库,下载地址 ./configure make sudo make install 三.安装openssl,ssl 功能依赖openssl库,下载地址 ./config make sudo make inst

windows环境下nginx服务器的安装与配置

转载至:http://www.cnblogs.com/hxxy2003/archive/2012/09/20/2695254.html nginx服务器是一个高性能的HTTP和反向代理服务器,它以稳定性.强大的功能.示例配置文件和低系统资源的消耗而闻名了.现在国内有很多大型网站都在使用nginx服务器,如腾讯.新浪.网易等. 1.安装nginx,去官网http://nginx.net去下载nginx,解压后即可: 2.使用命令行进入nginx的目录,如下: C:\Users\della>cd c

Linux环境下Nginx配置安装PHP

下边的安装配置方法,我试了一晚上没有成功,可能因为我的系统环境比较复杂,所以建议: 先安装PHP.使用yum命令安装,在安装配置MySQL,具体做法看博客中其他文章,至于Nginx服务器可以安装完这两个之后再安装配置,因为我目前不使用Nginx,直接使用Apache服务器,所以就没有在系统上编译安装Nginx,目前使用Wordpress,不需要Nginx,只要PHP和Mysql安装配置好,就可以了: 1.下载PHP依赖库: wget http://soft.beauty-soft.net/lib

Nginx--Windows环境下Nginx+tomcat配置(包括动静分离)

前提条件: (1)已安装好tomcat,且能成功启动 (2)已安装好Nginx,且能成功启动 接下来进行配置: (1)在Nginx的conf文件夹中新增两个文件,分别如下:(新建文件后,直接复制代码即可) 文件1:Proxy.conf proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_ad