当前位置:首页 > 计算机科学 > 网络技术 > 正文内容

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

fanglong2020-08-05网络技术1043

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

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

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

  • windows系统只能使用tcp socket的通信方式
    配置方法

  1. 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. unix socket:unix socket通信方式,需要在nginx配置文件中填写php-fpm运行的pid文件地址。

//service php-fpm start生成.sock文件
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;
}

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

通过注释可以看到,php-fpm的listen指令可以通过五种方式处理FastCGI请求,分别是:

  1. ipv4:端口号

  2. ipv6:端口号

  3. port相当于 0.0.0.0:port,本机所有ipv4对应的端口号

  4. 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

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


扫描二维码推送至手机访问。

版权声明:本文由人从众的博客发布,如需转载请注明出处。

本文链接:http://loulin.bid/11.html

分享给朋友:

相关文章

Nginx+PHP-FPM运行机制

CGIcommon gateway interface (公共网关接口) 请求模式:     Web Browe...

linux服务器上thinkphp等系统系统登录验证码一直提示不正确

用phpinfo函数找到相应的有效php.ini文件修改如下段落:session.save_path="/tmp"去掉;然后chmod -R 777 /tmp (赋予权限)重启相应...

Mysql 修改实例数据库下的所有表引擎

1. 修改单个表mysql> ALTER TABLE TABLENAME ENGINE=InnoDB2. 修改多表mysql>select ...

realtek 瑞昱r8168千兆网卡芯片编译安装驱动及解决出现问题

realtek 瑞昱r8168千兆网卡芯片编译安装驱动及解决出现问题

销售名称可以是:RTL8111e/8168B/8411 PCI EXPRESS 等等芯片基本上千兆的芯片都是的,说白了就是"换汤不换药".首先下载驱动地址:官方(选择linux r...

优化 CentOS 7,减少无用的写入动作延长 SSD 使用寿命

 禁用文件最后访问时间编辑 /etc/fstab 文件,为其中所有 xfs 的分区添加挂载参数。将类似以下的配置......    xfs  ...

评论列表

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。