php发展

首页 » 常识 » 问答 » nginx与phpfpm通信的两种方式
TUhjnbcbe - 2024/9/9 16:37:00

前言

nginx转发php类型的请求可以通过fastcgi的方式,fastcgi支持TCP和unixdomainsocket两种方式。

Unixdomainsocket监听

Unixdomainsocket或者IPCsocket是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。

与管道相比,Unixdomainsockets既可以使用字节流和数据队列,而管道通信则只能通过字节流。

Unixdomainsockets的接口和Internetsocket很像,但它不使用网络底层协议来通信。Unixdomainsocket的功能是POSIX操作系统里的一种组件。

TCP监听

通过网络TCP链接建立网络通信,即使是监听.0.0.1,也是通过网络底层协议来通信。相对于socket方式,会消耗一些网络资源。

选择TCP还是Unixdomainsocket?

如果nginx和php-fpm都在同一台机器,当然是选择Unixdomainsocket方式;但是如果nginx和php-fpm不在同一台机器,socket方式就不能用了。

如果网站的静态资源和php处理的页面是分开的,需要较高的处理能力,可以选择将nginx和php-fpm分开,通过TCP监听的方式组成集群进行处理。(因为fastcgi么有转发静态资源,所以需要nginx将静态资源转发对应的静态资源的目录)

php配置

php-fpm修改php-fpm.conf

TCP模式:

listen=0.0.0.0:

Unixdomainsocket模式:

listen=/opt/php/var/run/php-fpm.sock;这里的目录也可以选择/dev/shm/php-fpm.sock,/dev/shm/是一个内存的目录,相对读写的速度会快一点。

nginx修改

TCP模式:

upstreamfpm_server{server...:;  server...:;}server{  listen80;  server_namelocalhost;  root/var/

1
查看完整版本: nginx与phpfpm通信的两种方式