Nginx和php之间的运行机制以及原理

Nginx是俄国人最早开发的webserver,现在已经风靡全球,相信大家并不陌生,php也通过20多年的发展来到了7系列版本,更加关注性能,这对搭档在最近这些年,叱咤风云,基本上LNMP成了当下的标配,可是,你用了这么多年的Nginx+php的搭配,你真正知道他们之间是怎么交互怎么通信的么?

一、Nginx是什么

Nginx是一个高性能的http反向代理服务器,也是一个IMAP/POP3/SMTP服务器。

二、php-fpm是什么
1、cgi、fast-cgi协议
cgi的历史
早期的webserver只能处理HTML等静态文件,但是随着技术的发展,出现了php等动态语言。webserver处理不了了怎么办呢?那就交给php解释器处理吧!交给php解释器处理很好,但是php解释器如何和webserver进行通信呢?

为了解决不同的解释器(php解释器和Python解释器)和webserver的通信,于是出现了cgi协议,cgi(common
gateway
interface)通用网关协议,只要你按照cgi协议去编写程序,就能实现语言解释器与webserver的通信,如php-cgi程序。

2、fast-cgi的改进
有了cgi协议,解决的PHP解释器和webserver的通信问题,webserver终于可以处理动态语言了。但是,webserver每收到一个请求,就会去fork一个cgi进程,请求结束再kill掉这个进程,这样有10000个请求,webserver就需要fork、kill php-cgi进程10000次。有没有发现很浪费资源?

于是,出现了cgi的改良版本,fast-cgi。fast-cgi每次处理完一个请求后,不会立刻kill掉这个进程,而是保留这个进程,使这个进程可以一次处理多个请求,这样每次就不用重新fork一个进程了,大大提高了效率。

3、php-fpm
php-fpm即php-Fast-cgi Process Manager
php-fpm是fast-cgi的实现,并提供进程管理的功能。
包含了master进程和worker进程两种进程。
master进程只有一个,负责监听端口,接受来自webserver的请求,而worker进程则一般有多个(具体数量根据实际需要配置),每个进程内部都嵌入了一个php解释器,是php代码真正执行的地方。

三、Nginx如何与php-fpm结合
我们知道Nginx不仅能处理http的请求,还有做反向代理。
Nginx通过反向代理功能将动态请求转向php-fpm。

下面解释一下Nginx.conf配置项中的含义:

server {    
	listen       80; #监听80端口,接收http请求
    server_name  www.example.com; #就是网站地址
    root /usr/local/etc/nginx/www/huxintong_admin; # 准备存放代码工程的路径
    #路由到网站根目录www.example.com时候的处理
    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地址和端口
    }

}
打开php-fpm.conf文件,我们看到如下配置:
在这里插入图片描述

四、总结
当我们访问www.example.com的时候,处理流程是这样的

在这里插入图片描述
启动Nginx和php-fpm模块
查看php-fpm进程
在这里插入图片描述
转自https://blog.csdn.net/zjuwangleicn/article/details/79300347

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值