nginx
Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。
cgi,fast-cgi
也叫通用网关接口,是Web服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。
早期的webserver只能处理html等静态文件,无法处理动态语言(比如php程序),于是出现了cgi协议,只要按照cgi协议去编写程序,就能实现语言解释器与webwerver的通信。
但是该方法有个缺点,就是webserver每收到一个请求,都会去fork一个cgi进程,请求结束再kill掉这个进程。很明显这很浪费资源。
于是出现了fast-cgi。fast-cgi每次处理完请求后,不会kill掉这个进程,而是保留这个进程,使这个进程可以一次处理多个请求。
php-fpm
全称:php-Fastcgi Process Manager.
php-fpm是 FastCGI 的实现,并提供了进程管理的功能。
进程包含 master 进程和 worker 进程两种进程。
master 进程只有一个,负责监听端口,接收来自 Web Server 的请求,而 worker 进程则一般有多个(具体数量根据实际需要配置),每个进程内部都嵌入了一个 PHP 解释器,是 PHP 代码真正执行的地方。
Nginx + php-fpm
nginx 接收请求,然后通过反向代理功能将动态请求转向后端Php-fpm。具体流程如下:
请求
|
nginx
|
加载nginx fast-cgi模块
|
fast-cgi监听127.0.0.1:9000地址
|
请求到达127.0.0.1:9000
|
php-fpm 监听127.0.0.1:9000(master进程)
|
php-fpm 接收到请求,启用worker进程处理请求
|
php-fpm 处理完请求,返回给nginx
|
nginx将结果通过http返回给浏览器
nginx 相关命令
php-fpm 相关命令
文章参考: