web服务nginx和php的相互关系

不识庐山真面目,只缘身在此山中,仅仅是做php开发完成业务逻辑,可能会被困在web服务这座山里面,都不清楚这些服务的运作,相互关系,特别是如果有专门的服务器运维的话,就更加容易忽略这些东西了,今天抽时间对这些做了个总结。

在本地开发的时候因为是用的windows系统,安装集成开发环境XAMMP,点击几个启动按钮就可以进行php web开发了,傻瓜式操作当然方便,但如果完全依赖傻瓜式操作,以后就可能变成真的傻瓜了。

服务器上用的是linux系统,用的是mysql + nginx +php 来实现web服务,现在来分别看看这几个服务,然后看看这几个服务的相互关系。

nginx 和 php

nginx和php有什么关系,以及怎么关系起来的?运行一个php程序怎么通过nginx向客户端提供服务?

简单的说一下nginx,nginx是一个web服务,支持http协议,可以接收客户端的http请求,是客户端浏览请求的入口,nginx好比一个提供处理客户http请求的通讯部门。

然后来说一下php,php是一种编程语言,可以实现web应用,可以按照客户需求实时的做出各种各样的页面。把php也比作一个部分的话,php就是一个页面创作部门,但php这个部门本身不直接接受客户端的http请求。

这样一来,两者的关系就清晰了,nginx是客户http请求的出入口,接到客户请求后,转交给php部门,告诉php部门客户都需要什么样的网页,php只管按照请求解析生成对应的网页,然后交回给nginx。

以上是用比喻说明两者的大概流程关系,但是实际细节当然要复杂一些,因为要用程序语言来实现这些关系并不简单。

现实中如果有两个部门需要合作,通常需要中间对接人,那么这里的中间对接人是谁呢?这里要先提一下CGI (Common G), CGI是实现了和web服务器通讯的标准规范(这里就是和nginx的标准规范),规范明确指出了双方交流需要给定什么参数,以及参数的格式等,遵循这套规范的脚本语言就可以和web服务器打交道了,但是打交道多的话,需要考虑效率问题,于是又对这个进行了升级,然后有了FastCGI ,目前来说效率相对高,且适合php和nginx进行对接的是php-fpm,php-fpm是 PHP(Web Application)对 Web Server 提供的 FastCGI 协议的接口程序,这里可以理解为nginx和php交流的中间人,每次nginx接到http请求后,会看一下文件名,如果发现是php文件,就按要求和php-fpm交互,把相应的参数提交过去,php-fpm接到参数后,进行对应的解析,返回成html页面,nginx接到数据后,再将数据返回。

如图所示,我的web服务器在没有人访问的情况下依然看到很多 php-fpm进程,其中第一个 php-fpm是 master process,这种感觉就像是一个老大带着一帮小弟正在待命随时准备干活一样,当nginx接到请求后,把对应的参数交给php-fpm master process,也就是他们的老大,老大接到东西后又把活交给其他php-fpm,至于为什么要再这么中转一次,是因为php没完成一次工作,都要初始话,读取配置文件,然后开工,收工,既然每次开工前的准备工作都一样,那么这样肯定会造成效率的浪费,于是就有了个 master process帮大家先把准备工作做好,然后接到请求后把任务转发给其他的php-fpm,而且可以动态的控制其他php-fpm的数量,这里我尝试kill掉几个php-fpm子进程后,发现又有新的php-fpm出来了。要调整这些进程数量,可以在php-fpm.conf进行修改优化。

时间: 2024-10-27 05:52:19

web服务nginx和php的相互关系的相关文章

Web服务-Nginx

NMP架构:Nginx+Mysql+php(python),Nginx官方(http://nginx.org),不支持java 比apache性能高,并发高,支持代理 访问原理: 客户访问--->nginx读取html文件传给客户端--->浏览器解释页面   nginx模块化:安装时需要选择 依赖包:gcc.pcre.pcre-devel.zlib.zlib-devel.openssl.openssl-devel Nginx配置文件及目录: /usr/local/nginx/ #安装目录 /u

nginx 与 tomcat 组合搭建web服务

部分内容转自 http://www.cnblogs.com/naaoveGIS/ 1. Web服务 nginx是常用的web服务器,用于获取静态资源,类似的服务器还有apache. tomcat是基于java servlet 的 web 容器,用于获取动态资源. 一般的web服务架构:前端部署nginx,后端部署tomcat.用户访问nginx,静态资源nginx直接返回,动态资源的请求被nginx转发到tomcat,tomcat将处理完的结构返回给nginx,然后到浏览器. 2.Nginx简介

转:WF工作流技术内幕 —— 通过Web服务调用Workflow工作流(开发持久化工作流)

转:http://www.cnblogs.com/carysun/archive/2009/01/11/receiveactivity.html 如果你曾经负责开发企业ERP系统或者OA系统,工作流对你来说一定并不陌生.工作流(Workflow)是对工作流程及其各操作步骤之间业务规则 的抽象.概括.描述.工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档.信息或者任务.有见及 此,微软在.NET 3.0基础上发布了WF,WCF,以及WCS(身份

相信很多朋友遇到过网站换服务器的问题,或成功或失败!今天3A网络小钱给大家讲的是自己的一个亲身经历,原先小钱有一个网站是在linux服务器上运行,所用的web服务为nginx+mysql+php,但由于服务器到期,新服务器用的是win2008系统,那就需要只能做好迁移! 前期做的准备 1、必须了解自己网站所用的PHP和MySQL的版本 2、网站大小

相信很多朋友遇到过网站换服务器的问题,或成功或失败!今天3A网络小钱给大家讲的是自己的一个亲身经历,原先小钱有一个网站是在linux服务器上运行,所用的web服务为nginx+mysql+php,但由于服务器到期,新服务器用的是win2008系统,那就需要只能做好迁移! 前期做的准备 1.必须了解自己网站所用的PHP和MySQL的版本 2.网站大小 3.数据库大小 由于网站过于巨大90G,而linux服务器上磁盘空间不够无法压缩,最后我选择的办法是使用FTP传,没想到什么好办法. 网站的数据库大

【转】Web服务器之Nginx详解(理论部分)

大纲 一.前言 二.Web服务器提供服务的方式 三.多进程.多线程.异步模式的对比 四.Web 服务请求过程 五.Linux I/O 模型 六.Linux I/O 模型具体说明 七.Linux I/O模型的具体实现 八.Apache 的工作模式 九.支持高并发的Web服务器 十.Nginx 详解 一.前言 注,在说Web服务器之前,先说说线程.进程.以及并发连接数. 1.进程与线程 进程是具有一定独立功能的程序,关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.从逻辑

Web服务之Nginx浅析

一.Nginx 简介: nginx [engine x]是Igor Sysoev编写的一个高性能的HTTP和反向代理服务器,另外它也可以作为邮件代理服务器. 在大多数情况下都是用来做静态web服务器和反向代理服务器,在作为反向代理服务器的时候,Nginx可以对后端的real server做负载均衡,基于应用层的负载均衡,但是他仅支持一些常见的协议,如:http.mysql.ftp.smtp. 特性: Nginx是一款面向性能设计的HTTP服务器,相较于Apache.lighttpd具有占有内存少

Web服务之Nginx反向代理与负载均衡

一.代理 正向代理: 正向代理是一个位于客户端和目标服务器之间的服务器,为了从目标服务器取得内容,客户端向代理发送一个请求并指定目标服务器,然后代理向目标服务器转交请求并将获得的内容返回给客户端.客户端必须要进行一些特别的设置才能使用正向代理. 作用: 访问无法访问的服务器(翻墙,懂得) 加速访问目标服务器(链路加速) Cache缓存(访问加速) 实现客户端访问授权 隐藏访问者 反向代理: 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转

nginx提供web服务和实现负载均衡

##############nginx直接作为web服务站点###########背景:一台服务器建立两个web服务站点1)mkdir  /web1  /web2  ##建立二根个目录cd /web1vim index.htmlwww.web1.org    ##随便写东西 cd /web2vim index.html  www.web2.org    ##随便写东西和第一个不一样就行2)vim  /usr/local/nginx/conf/nginx.conf  ##添加以下参数 server

Zabbix 使用nginx做web服务

zabbix 使用nginx做web服务 逻辑图: yum  nginx装好,默认的default.conf文件直接backup掉,新建一个zabbx.conf文件, #如果有报错看下nginx_log 日志排错,zabbix3.0.4nginx转发依赖./php-fpm -v PHP 5.6.25,之前代理发现没用 报错也不是配置错误,查看官网发现是php-fpm版本问题. 10.10.254.25 zabbix_server服务器nginx配置: $ cat zabbix.conf  ser