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 相关文章推荐
example1.php
Oct 09 PHP
session 的生命周期是多长
Oct 09 PHP
在smarty中调用php内置函数的方法
Feb 07 PHP
php实现批量压缩图片文件大小的脚本
Jul 04 PHP
php使用fputcsv()函数csv文件读写数据的方法
Jan 06 PHP
PHP实现阳历到农历转换的类实例
Mar 07 PHP
php简单生成随机数的方法
Jul 30 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
May 30 PHP
yii2 commands模式以及配置crontab定时任务的方法
Aug 19 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
php和asp语法上的区别总结
May 12 PHP
PHP unset函数原理及使用方法解析
Aug 14 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设计模式 Composite (组合模式)
2011/06/26 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
2019/04/16 PHP
Javascript----文件操作
2007/01/18 Javascript
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
node.js入门教程
2014/06/01 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
JavaScript实现添加、查找、删除元素
2015/07/02 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
微信小程序 合法域名校验出错详解及解决办法
2017/03/09 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
[57:22]完美世界DOTA2联赛PWL S2 FTD vs PXG 第二场 11.27
2020/12/01 DOTA
python中sets模块的用法实例
2014/09/30 Python
Python中的fileinput模块的简单实用示例
2015/07/09 Python
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
Timberland法国官网:购买靴子、鞋子、衣服、夹克和配饰
2019/11/30 全球购物
军训自我鉴定范文
2014/02/13 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
《将心比心》教学反思
2014/04/08 职场文书
生日宴会策划方案
2014/06/03 职场文书
机关党员进社区活动总结
2014/07/05 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
大学生党员自我评价
2015/03/04 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书
nginx常用配置conf的示例代码详解
2022/03/21 Servers
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers