nginx与php-fpm通信的两种方式

10人阅读 评论(0) 收藏 举报
分类:
 

nginx与php-fpm通信的两种方式

简述

在linux中,nginx服务器和php-fpm可以通过tcp socket和unix socket两种方式实现。

unix socket是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。这种方式需要再nginx配置文件中填写php-fpm的pid文件位置,效率要比tcp socket高。

tcp socket的优点是可以跨服务器,当nginx和php-fpm不在同一台机器上时,只能使用这种方式。

windows系统只能使用tcp socket的通信方式

配置方法

tcp socket

tcp socket通信方式,需要在nginx配置文件中填写php-fpm运行的ip地址和端口号。

location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

unix socket

unix socket通信方式,需要在nginx配置文件中填写php-fpm运行的pid文件地址。

location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

php-fpm的运行端口号和socket文件的地址都是在php-fpm.conf中配置的。 
php-fpm.conf文件在php安装文件的/etc目录下, 
比如你的php安装在/opt/php目录,则应该是/opt/php/php-fpm.conf。

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all IPv4 addresses on a
;                            specific port;
;   '[::]:port'            - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000
listen = /var/run/php-fpm.sock
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

通过注释可以看到,php-fpm的listen指令可以通过五种方式处理FastCGI请求,分别是: 
1. ipv4:端口号 
2. ipv6:端口号 
3. port相当于 0.0.0.0:port,本机所有ipv4对应的端口号 
4. [::]:port,包括ipv4和ipv6 
5. unix socket文件

直接配置使用unix socket文件之后,会遇到access deny的问题,由于socket文件本质上还是一个文件,存在权限控制问题,默认由root用户创建,因此nginx进程无权限访问,应该配置如下命令:

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = www
listen.group = www 
listen.mode = 0660
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

可以配置nginx和php-fpm都是用www用户,这样就不会存在权限问题,当然也可以创建不同的用户,然后加入同一个组,便于分配权限。

关于更多linux权限控制,可以参考 http://blog.csdn.net/koastal/article/details/52447735

查看评论

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

地址:http://blog.51cto.com/nineep/1845961 kankacan一、FastCGI特点: 1、HTTP服务器和动态脚本语言间通信的接口或工具 2、...
  • u013870094
  • u013870094
  • 2017-11-29 12:02:49
  • 99

nginx 和 php-fpm 使用unix socket通信及配置

哈哈,阿里云最近貌似在搞活动,之前一直在本地玩虚拟机,总觉得不是很方便,于是趁着活动期间买了一台服务器,很值,感谢马云。      今天看了一下php-fpm和nginx使用unix socket的方...
  • lzy0613
  • lzy0613
  • 2017-08-11 10:37:46
  • 1057

Nginx + PHP-FPM + APC=绝妙的组合

  • 2010年07月09日 14:11
  • 52KB
  • 下载

nginx 和php-fpm 的两种通信

FPM 是一个 PHP 进程管理器,包含 master 进程和 worker 进程两种进程:master 进程只有一个,负责监听端口,接收来自 Web Server 的请求,而 worker 进程则一...
  • xjw440
  • xjw440
  • 2017-07-20 14:10:28
  • 369

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

Nginx+php-fpm实现原理 Nginx本身不会对PHP进行解析,终端对PHP页面的请求将会被Nginx交给FastCGI进程监听的IP地址及端口,由php-fpm作为动态解析服务器处...
  • zhaoliang831214
  • zhaoliang831214
  • 2016-05-06 18:43:50
  • 5264

nginx通过TCP以及unix-domain-socket连接fastcgi方式对比

对于nginx连接fastcgi的两种不同方式做了测试,结果如下。 Tcp是使用TCP端口连接127.0.0.1:9000 Socket是使用unix domain socket连接套接字...
  • lifushan123
  • lifushan123
  • 2015-05-14 00:21:54
  • 1381

Nginx 和 PHP 的两种部署方式比较

第一种 前置1台nginx服务器做HTTP反向代理和负载均衡 后面N太服务器的Nginx做Web服务,并调用php-fpm提供的fast cgi服务 此种部署方式最为常见,web服务和PHP服务在同一...
  • Zuocheng_Liu
  • Zuocheng_Liu
  • 2015-10-28 16:54:38
  • 4974

nginx php-fpm spawn-fastcgi 两种通信方式

nginx php-fpm 使用socket通信 建立 PHP-FPM 使用一个 Unix Socket vi /etc/php-fpm.d/www.conf [...] ;listen = ...
  • climb_up
  • climb_up
  • 2014-03-14 01:34:59
  • 1529

nginx中php-fpm使用sock方式配置的例子

本文介绍下,在nginx中php-fpm使用sock方式进行配置的例子,有需要的朋友,参考下吧。 sock方式配置nginx的php-fpm,如下:   ...
  • u011630575
  • u011630575
  • 2015-09-08 10:18:07
  • 1544

php-fpm使用sock配置与nginx配置sock连接

原文  http://www.51bbo.com/archives/2194 主题 Nginx PHP-FPM 大部分默认的nginx连接方式为php-fpm监听127.0....
  • soonfly
  • soonfly
  • 2016-03-23 10:07:42
  • 1775
    个人资料
    持之以恒
    等级:
    访问量: 14万+
    积分: 2597
    排名: 1万+
    最新评论