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


Posted in PHP onSeptember 28, 2018

先给大家介绍下php 与 nginx 的两种处理方式,具体内容如下所示:

1.IP:Port 监听方式

php-fpm
docker pull PHP:2.4-alpine
nginx.conf
fastcgi_pass 127.0.0.1:9000;

php-fpm 在容器里的 nginx.conf

location /php
    {     
      proxy_set_header Host $host:$server_port;
      proxy_pass http://138.38.38.111:80/;
    }

2.UDS 方式监听

php-fpm
listen = /tmp/php-fpm.sock
nginx.conf
fastcgi_pass unix:/tmp/php-fpm.sock;

3.注意

php-fpm用ip:port方式建立链接,

nginx不要用unix socket方式建立链接,用ip:port方式建立连接就行

下面看下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;
}

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;
}

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. [::]: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

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

总结

以上所述是小编给大家介绍的php 与 nginx 的两种处理方式及nginx与php-fpm通信的两种方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
PHP4 与 MySQL 数据库操作函数详解
Oct 09 PHP
Excel数据导入Mysql数据库的实现代码
Jun 05 PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 PHP
PHP 模拟$_PUT实现代码
Mar 15 PHP
php将fileterms函数返回的结果变成可读的形式
Apr 21 PHP
深入php数据采集的详解
Jun 02 PHP
php用正则表达式匹配中文实例详解
Nov 06 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
微信公众平台开发关注及取消关注事件的方法
Dec 23 PHP
php校验表单检测字段是否为空的方法
Mar 20 PHP
php实现RSA加密类实例
Mar 26 PHP
PHP Smarty模版简单使用方法
Mar 30 PHP
PHP从尾到头打印链表实例讲解
Sep 27 #PHP
实现php删除链表中重复的结点
Sep 27 #PHP
浅析php如何实现爬取数据原理
Sep 27 #PHP
Laravel源码解析之路由的使用和示例详解
Sep 27 #PHP
php实现有序数组旋转后寻找最小值方法
Sep 27 #PHP
PHP实现SMTP邮件的发送实例
Sep 27 #PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
Sep 26 #PHP
You might like
PHP的FTP学习(二)[转自奥索]
2006/10/09 PHP
php下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
js的一些常用方法小结
2011/06/29 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
分享一则javascript 调试技巧
2015/01/02 Javascript
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
javascript实现简单的二级联动
2015/03/19 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
AngularJS国际化详解及示例代码
2016/08/18 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
2016/09/02 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
浅谈Vue.js
2017/03/02 Javascript
JS实现标签页切换效果
2017/05/04 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
详解Node.JS模块 process
2020/08/31 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访-EG篇
2018/04/03 DOTA
python中requests使用代理proxies方法介绍
2017/10/25 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
Tensorflow不支持AVX2指令集的解决方法
2020/02/03 Python
工商管理应届生求职信
2013/10/07 职场文书
工作过失检讨书
2014/02/23 职场文书
信息技术课后反思
2014/04/27 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
乡镇党员群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
2016年第29个世界无烟日宣传活动总结
2016/04/06 职场文书
人民币使用说明书
2019/04/17 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书