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

本文详细介绍了Nginx服务器的作用及其与PHP-FPM的结合方式。包括Nginx作为前端服务器的特点,FastCGI的工作原理,以及PHP-FPM如何提高PHP处理效率。此外还展示了具体的配置步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值