Ubuntu18.04.5:Nginx和PHP_FPM通信设置

关于Nginx工作原理,这篇博文是看到的最完整,推荐~:https://blog.csdn.net/hguisu/article/details/8930668
这里是针对目前碰到问题的解决方案提炼简化,聚焦的是Nginx和PHP_FPM成功通信的配置设置。很多会有重复。

Nginx是轻量HTTP Server,工作是响应和并发处理,具体来说负责解析静态请求、转发动态请求及把处理后的动态请求结果转回给客户。而具体处理动态请求(解析并得结果)则需要第三方程序,这个过程就需要Nginx和第三方程序间有效通信协议了(Fast CGI)。具体举例PHP,Nginx本身并不会对PHP语言进行解析,这个区别于apache(apache有在带的mod_php模块进行php解析).Nginx是通过fastcgi将客户端的PHP请求交给后台的第三方PHP-fpm进程管理器,PHP-fpm具有解析PHP的功能。Nginx和PHP_fpm间通信设置:Nginx相应配置文件在etc/nginx/sites-enabled/default中:(请关注绿标)Nginx端和PHP_FPM通信的配置(绿箭头间)
PHP_FPM相应配置文件在:etc/php/7.2/fpm/pool.d/www.conf中:(关注绿标,其实就是声明监听指定端口)就是一个监听端口(绿箭头)
Nginx和PHP-FPM的进程间通信有两种方式,一种是TCP Socket,一种是Unix Socket。须保证nginx配置的监听方式和php-fpm.conf配置的监听方式保持一致性!(如果有别虚拟主机比如:Nginx+apache2, 那apache2和Nginx的这个通信方式也要一致)

Tcp Socket方式是IP加端口,可以跨服务器.而UNIX Socket不经过网络,只能用于Nginx跟PHP-FPM都在同一服务器的场景,用哪种取决于你的PHP-FPM配置
Tcp Socket方式:

nginx.conf中配置:fastcgi_pass 127.0.0.1:9000;

php-fpm.conf中配置:listen=127.0.0.1:9000;

Unix Domain Socket方式:

nginx.conf中配置:fastcgi_pass unix:/tmp/php-fpm.sock;

php-fpm中配置:listen = /tmp/php-fpm.sock;

(php-fpm.sock是一个文件,由php-fpm生成)

UNIX Domain Socket可用于两个没有亲缘关系的进程,是目前广泛使用的IPC机制,比如X Window服务器和GUI程序之间就是通过UNIX Domain Socket通讯的.这种通信方式是发生在系统内核里而不会在网络里传播.UNIX Domain Socket和长连接都能避免频繁创建TCP短连接而导致TIME_WAIT连接过多的问题.对于进程间通讯的两个程序,UNIX Domain Socket的流程不会走到TCP那层,直接以文件形式,以stream socket通讯.如果是TCP Socket,则需要走到IP层,对于非同一台服务器上,TCP Socket走的就更多了.

UNIX Domain Socket:
Nginx <=> socket <=> PHP-FPM
TCP Socket(本地回环):
Nginx <=> socket <=> TCP/IP <=> socket <=> PHP-FPM
TCP Socket(Nginx和PHP-FPM位于不同服务器):
Nginx <=> socket <=> TCP/IP <=> 物理层 <=> 路由器 <=> 物理层 <=> TCP/IP <=> socket <=> PHP-FPM

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值