nginx+php运行原理(以及nginx和php-fpm)

原创 2017年09月08日 09:23:16

nginx服务器作用

1,前端服务器:负责http请求解析转发,或者处理静态请求。轻量级,并发量高,可以作为反向代理,负载均衡。
应用服务器:负责调用某种语言的解释器,或则某某种语言写的程序,接受http请求,按照开发者意图做出动作,把结果返回给请求。

Fastcgi

cgi:全称common gateway interface 是应用服务器与语言相关的处理程序之间的接口。
处理程序调用这个接口,应用服务器调用这个接口。传入http中各参数,实现动态请求。每次收到请求时,应用服务器都要新建一个进程,调用处理程序,使用完之后就结束这个进程。进程的建立与释放都比较消耗资源,因此这么做的效率并不高。
fastcgi是对cgi的改进。它随着nginx启动一并驻留内存中,当请求到达时,处理之,处理完之后并不结束这个进程,而是继续等待下一次连接。
首先,Fastcgi会先启一个master,解析配置文件,初始化执行环境,然后再启动多个worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。这样就避免了重复的劳动,效率自然是高。而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对进程的管理。

PHP-fpm与PHP-cgi

php-cgi是语言的解释器。之前是请求到来时候,都要新开一个进程启动php-cgi,重新载入配置、数据结构,初始化运行环境.更新PHP配置之后,需要重启PHP-cgi,配置才能生效。
php-fpm实现了fastcgi的管理器。常驻内存,负责管理各个php-cgi进程。可以提升运行效率,实现平滑重启。

在机器上配置PHP-fpm

在nginx.conf文件中,php相关的location块中配置fasecgi_pass,指向php-fpm监听的端口。php-fpm的配置文件中,监听某个端口。貌似配置文件中默认都是127.0.0.1:9000

备注:

php-fpm是什么?
全称: php-fastcgi process manager
php-fpm是fastcgi的实现,并提供了进程管理功能。进程包含了master和worker两种进程。
master进程只有一个,负责监听端口,接收webserver请求;然而worker进程有多个,每个进程都嵌入了php解释器,是php代码真正执行的地方。

Nginx如何与Php-fpm结合

Nginx不只有处理http请求的功能,还能做反向代理。Nginx通过反向代理功能将动态请求转向后端Php-fpm。

以下看下nginx.conf的配置文件server{}
server{
listen 80;
server_name www.explame.com;
root /usr/local/etc/nginx/www/huxintong_admin; # 准备存放代码工程的路径
location / {
index index.php; #跳转到www.example.com/index.php
autoindex on;
}
#当请求网站下php文件的时候,反向代理到php-fpm
location ~ .php${
include /usr/local/etc/nginx/fastcgi.conf; #加载nginx的fastcgi模块
fastcgi_intercept_errors on;
fastcgi_pass 127.0.0.1:9000; #nginx fastcgi进程监听的IP地址和端口
}
}
nginx与php-fpm结合
整个执行流程如下:
www.example.com
|
|
Nginx
|
|
路由到www.example.com/index.php
|
|
加载nginx的fast-cgi模块
|
|
fast-cgi监听127.0.0.1:9000地址
|
|
www.example.com/index.php请求到达127.0.0.1:9000
|
|
php-fpm 监听127.0.0.1:9000
|
|
php-fpm 接收到请求,启用worker进程处理请求
|
|
php-fpm 处理完请求,返回给nginx
|
|
nginx将结果通过http返回给浏览器

查看php-fmp进程

sudo nginx -s reload
sudo php-fpm
查看下:
ps -ef | grep fpm

相关文章推荐

linux nginx启动 重启 关闭命令

启动操作 [php] view plaincopyprint?nginx启动,重启,关闭命令" style="margin:0px; padding:0px; border:0px no...

linux下nginx命令方法总结

启动操作 nginx -c /usr/local/nginx/conf/nginx.conf -c参数指定了要加载的nginx配置文件路径 停止操作 停止操作是通过向ngin...

Nginx+Php-fpm运行原理详解

代理与反向代理现实生活中的例子1、正向代理:访问google.com如上图,因为google被墙,我们需要vpn翻墙才能访问google.com。 vpn对于“我们”来说,是可以感知到的(我们连接...

Nginx+Php-fpm运行原理详解

一、代理与反向代理 现实生活中的例子 1、正向代理:访问google.com 如上图,因为google被墙,我们需要vpn翻墙才能访问google.com。 vpn对于...

nginx、php-fpm以及mysql运行在各个用户下的配置

nginx、php-fpm以及mysql运行在各个用户下的配置。 先来做个说明:nginx本身不能处理PHP,它只是个web服务器。当接收到客户端请求后,如果是php请求,则转发给php解释器处...

Debian系统安装nginx+php5-fpm

  • 2017年05月24日 11:05
  • 5.53MB
  • 下载

CentOS使用YUM安装php运行环境,包含php,php-fpm,nginx,mysql

我们要使用yum来安装PHP-fpm和比较新版本的php,nginx,MySQL-server

Nginx + PHP 运行原理

转载自:http://blog.csdn.net/u013474436/article/details/52972699 Nginx是什么 Nginx (“engine x”) 是一个高性能的HTT...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:nginx+php运行原理(以及nginx和php-fpm)
举报原因:
原因补充:

(最多只允许输入30个字)