php + nginx项目中的权限详解


Posted in PHP onMay 23, 2017

本文给大家介绍的关于php + nginx项目权限的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:

nginx/php-fpm

进程权限

  • 主进程用户为启动的用户
  • 子进程

1、nginx的用户为nginx.conf中配置的用户

2、php-fpm的用户为php-fpm.conf中配置的用户

如:启动nginx的是root,nginx中配置的user是nginx,那主进程就是root,子进程就是nginx

处理方式

以下访问均以nginx子进程进行

静态文件

  • 步骤:nginx访问/index.html时,nginx会直接访问对应文件,并将内容返回给请求的客户端。
  • 权限情况:此时只需要nginx拥有index.html文件的权限即可。

php脚本文件

步骤:

  • nginx访问/index.php时,nginx为了能够把正确的脚本处理结果返回给客户端,需要进行配置告诉nginx.php是非静态文件,需要php脚本解析器进行处理后才能返回内容。
  • 一般来讲会在nginx配置中加上类似fastcgi_pass unix:/var/run/php5-fpm.sock;这样的配置项,指明nginx在遇到访问脚本文件时需要去找谁,之后会访问该文件做到将请求转发至php-fpm。
  • 由php-fpm访问真正的php脚本文件,将结果返回值nginx,再有nginx将结果返回至客户端。

权限情况:

  • nginx需要有/var/run/php5-fpm.sock文件权限;
  • php-fpm需要有/index.php文件权限;

用户配置位置

nginx用户设置在nginx.conf中第一行的user

php-fpm用户设置在php-fpm.conf中的

  • listen.owner = xxx;设置unix socket用户
  • user = xxx设置进程启动用户

注:以上两个配置文件不同的操作系统下文件名略有不同,请根据自身安装情况自行判断。

nginx转发内容到php-fpm不只有/var/run/php5-fpm.sock的方式,在php-fpm.conf中还可以通过配置改为xxx.xxx.xxx:9000等方式

; 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 = /var/run/php5-fpm.sock

其他

比较特别的点,一般nginx都是用root用户启动的(为了获取80端口权限),如果本地开发nginx是用普通用户重启,那么主进程和子进程都会是当前用户,nginx.conf中的配置不再起效,暂不清楚原因。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
Jul 03 PHP
php报表之jpgraph柱状图实例代码
Aug 22 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
May 04 PHP
Laravel 5框架学习之数据库迁移(Migrations)
Apr 08 PHP
标准版Eclipse搭建PHP环境的详细步骤
Nov 18 PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 PHP
10个值得深思的PHP面试题
Nov 14 PHP
PHP简单装饰器模式实现与用法示例
Jun 22 PHP
基于PHP常用文件函数和目录函数整理
Aug 17 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 PHP
PHP-FPM的配置与优化讲解
Mar 15 PHP
PHP 实现文件压缩解压操作的方法
Jun 14 PHP
Yii框架实现记录日志到自定义文件的方法
May 23 #PHP
Yii 2.0如何使用页面缓存方法示例
May 23 #PHP
PHP创建单例后台进程的方法示例
May 23 #PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
May 23 #PHP
yii 2.0中表单小部件的使用方法示例
May 23 #PHP
php实现留言板功能(会话控制)
May 23 #PHP
php实现文件预览功能
May 23 #PHP
You might like
解析PHP提交后跳转
2013/06/23 PHP
Jquery弹出窗口插件 LeanModal的使用方法
2012/03/10 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
JavaScript生成.xls文件的代码
2016/12/22 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
详解Vue组件之间的数据通信实例
2017/06/17 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
微信小程序与公众号卡券/会员打通的问题
2019/07/25 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
Python多进程机制实例详解
2015/07/02 Python
Python读取文件内容的三种常用方式及效率比较
2017/10/07 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
Python实现的用户登录系统功能示例
2018/02/05 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
Python如何生成xml文件
2020/06/04 Python
python实现三种随机请求头方式
2021/01/05 Python
Elizabeth Gage官网:英国最好的珠宝设计之一
2020/09/26 全球购物
八年级英语教学反思
2014/01/09 职场文书
村委会主任先进事迹
2014/01/15 职场文书
检讨书模板大全
2015/05/07 职场文书
山楂树之恋观后感
2015/06/11 职场文书
入队仪式主持词
2015/07/04 职场文书
MySQL 字符集 character
2022/05/04 MySQL