php发展

注册

 

发新话题 回复该主题

nginx与phpfpm通信的两种方式 [复制链接]

1#

前言

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/p>

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/

分享 转发
TOP
发新话题 回复该主题