Nginx和php-fpm是怎么通信的

FastCGI原理
    FastCGI是一个运用于HttpServer和动态脚本语言间通信的接口,多数流行的Http Server都支持FastCGI,包括Apache、Nginx和lighttpd等。同时,FastCGI也被许多脚本语言支持,其中就有PHP。
    FastCGI接口方式采用C/S结构,可以将HttP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HttP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给客户端。这种方式可以让HttP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。

Nginx+php-fpm实现原理

Nginx本身不会对PHP进行解析,终端对PHP页面的请求将会被Nginx交给FastCGI进程监听的IP地址及端口,由php-fpm作为动态解析服务器处理,最后将处理结果再返回给nginx。其实,Nginx就是一个反向代理服务器。Nginx通过反向代理功能将动态请求转向后端php-fpm,从而实现对PHP的解析支持,这就是Nginx实现PHP动态解析的原理。

Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux下是socket(这个socket可以是文件socket,也可以是ip socket)。为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接收到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端。

时间: 2024-08-24 00:31:52

Nginx和php-fpm是怎么通信的的相关文章

nginx和php之间是怎样通信的呢

FastCGI原理 FastCGI是一个运用于Http Server和动态脚本语言间通信的接口,多数流行的Http Server都支持FastCGI,包括Apache.Nginx和lighttpd等.同时,FastCGI也被许多脚本语言支持,其中就有PHP. FastCGI接口方式采用C/S结构,可以将HttP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程.当HttP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给客

nginx 和 php-fpm 通信使用unix socket还是TCP,及其配置

前言 nginx和fastcgi的通信方式有两种,一种是TCP的方式,一种是unix socke方式.两种方式各有优缺点,这里先给出两种的配置方法,然后再对性能.安全性等做出总结. TCP是使用TCP端口连接127.0.0.1:9000 Socket是使用unix domain socket连接套接字/dev/shm/php-cgi.sock(很多教程使用路径/tmp,而路径/dev/shm是个tmpfs,速度比磁盘快得多),在服务器压力不大的情况下,tcp和socket差别不大,但在压力比较满

【转】nginx 和 php-fpm 通信使用unix socket还是TCP,及其配置

原文: http://blog.csdn.net/pcyph/article/details/46513521 -------------------------------------------------------------------------------------------------------------------- 前言 nginx和fastcgi的通信方式有两种,一种是TCP的方式,一种是unix socke方式.两种方式各有优缺点,这里先给出两种的配置方法,然后再

php与nginx之间的通信

Nginx是俄国人最早开发的Webserver,现在已经风靡全球,相信大家并不陌生.PHP也通过二十多年的发展来到了7系列版本,更加关注性能.这对搭档在最近这些年,叱咤风云,基本上LNMP成了当下的标配.可是,你用了这么多年的Nginx+PHP的搭配,你真正知道他们之间是怎么交互怎么通信的么?作为一道常常用来面试的考题,从过往经验看,情况并不乐观.更多的同学是知道PHP-FPM.知道FastCGI,但不晓得Nginx.PHP这对老搭档具体的交互细节.那么,今天我们就来一起学习一下,做一回认真的P

Fpm 之 Nginx rpm 包制作

Fpm 之 Nginx rpm 包制作 一.下载nginx编译安包机器上 wget http://nginx.org/download/nginx-1.12.2.tar.gz 二.安装nginx的编译所需的依赖包 yum -y install pure lib gcc-c++ openssl openssl-devel 三.编译安装nginx tar -zxvf nginx-1.12.2.tar.gz cd nginx-1.12.2 ./configure --prefix=/app/nginx

mysql+nginx+php+memcache

***************** mysql+nginx+php+memcache ****************** 1.Mysql 安装 软件包依赖性: # yum install -y gcc-c++ make ncurses-devel bison openssl-devel zlib-devel cmake-2.8.12.2-4.el6.x86_64.rpm # tar zxf mysql-boost-5.7.17.tar.gz # cd mysql-5.7.17/ cmake -

WebService之nginx+(php-fpm)结构模型剖析及优化

随着php脚本语言使用的普及,目前webserice服务大部分都在用nginx+(php-fpm)的结构,了解了其工作过程后才可以在各个方面想办法做调整优化和故障排查,从以下几点总结一下这种模型. 一.nginx和php-fpm的关系和分工 nginx是web服务器,php-fpm是一个PHPFastCGI进程管理器,两者遵循fastcgi的协议进行通信,nginx负责静态类似html文件的处理,php-fpm负责php脚本语言的执行,这么设计的目的是为了解耦前端nginx和后端的php,不至于

nginx 基础总结

Nginx官方站点:http://nginx.org/ 解决C10k的问题:能支持较大并发的服务器程序,突破了1万个请求. nginx功能: 可以当做静态的web服务器: core模块实现http功能: 支持虚拟主机(基于port.hostname.ip方式): keepalived保持会话 访问日志 url rewrite重写 路径别名 基于ip访问控制 速率限制及并发数量限制等: 可作为(http的)反代服务器及负载均衡器: proxy模块实现反代 upstream模块实现负载均衡 支持fa

FastCGI特点原理、nginx与php-fpm两种通信方式对比

kankacan一.FastCGI特点: 1.HTTP服务器和动态脚本语言间通信的接口或工具 2.可把动态语言解析和HTTP服务器分离I 3.Nginx.Apache.Lighttpd,以及多数动态语言 都支持FastCGI 4.FastCGI接口方式采用 C/S结构,分为客户端(HTTP服务器)和服务器端(动态语言解析服务器) 5.PHP动态语言服务器可以启动多个FastCGI的守护进程(例如php-fpm(fcgi process mangement)) 6.HTTP服务器通过 FastCG

nginx配置进阶(三)

nginx配置进阶(三) ======================================================================================= 概述: ======================================================================================= ngx_http_fastcgi_module模块:构建lnmp  1.The ngx_http_fastcgi_