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 相关文章推荐
Zend公司全球首推PHP认证
Oct 09 PHP
php empty函数判断mysql表单是否为空
Apr 12 PHP
php 模拟POST|GET操作实现代码
Jul 20 PHP
php下关于Cannot use a scalar value as an array的解决办法
Aug 08 PHP
PHP取得一个类的属性和方法的实现代码
May 22 PHP
PHP 常用数组内部函数(Array Functions)介绍
Jun 05 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
Jun 04 PHP
windows中为php安装mongodb与memcache
Jan 06 PHP
PHP中使用Memache作为进程锁的操作类分享
Mar 30 PHP
PHP MVC框架skymvc支持多文件上传
May 26 PHP
详细解读php的命名空间(一)
Feb 21 PHP
PHP 爬取网页的主要方法
Jul 13 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
Syphon 秘笈
2021/03/03 冲泡冲煮
国外PHP程序员的13个好习惯小结
2012/02/20 PHP
php中常用的预定义变量小结
2012/05/09 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
jQuery.prop() 使用详解
2015/07/19 Javascript
理解javascript正则表达式
2016/03/08 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
Node 升级到最新稳定版的方法分享
2018/05/17 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
2019/05/27 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
vue实现表格合并功能
2020/12/01 Vue.js
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
用Python解决计数原理问题的方法
2016/08/04 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
Python Sphinx使用实例及问题解决
2020/01/17 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
如何用 Python 处理不平衡数据集
2021/01/04 Python
美国快时尚彩妆品牌:Winky Lux(透明花瓣润唇膏)
2018/11/06 全球购物
最新大学生自我评价
2013/09/24 职场文书
军训的自我鉴定
2013/12/10 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
行政监察建议书
2014/05/19 职场文书
主题班会演讲稿
2014/05/22 职场文书
家长会标语
2014/06/24 职场文书
2015年度企业工作总结
2015/05/21 职场文书
2016年离婚协议书范文
2016/03/18 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书