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 相关文章推荐
完美解决dedecms中的[html][/html]和[code][/code]问题
Mar 20 PHP
五款常用mysql slow log分析工具的比较分析
May 22 PHP
浅析Mysql 数据回滚错误的解决方法
Aug 05 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
Jun 20 PHP
destoon设置自定义搜索的方法
Jun 21 PHP
PHP实现的简单缓存类
Jul 29 PHP
linux下php上传文件注意事项
Jun 11 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
Nov 14 PHP
老生常谈PHP面向对象之标识映射
Jun 21 PHP
PHP实现的策略模式简单示例
Aug 25 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
Feb 27 PHP
PHP 图片处理
Sep 16 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扩展介绍与开发教程
2010/08/19 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
php+mysql实现的无限分类方法类定义与使用示例
2020/05/27 PHP
另类调用flash无须激活的方法
2006/12/27 Javascript
jQuery学习笔记之Helloworld
2010/12/22 Javascript
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
js事件监听机制(事件捕获)总结
2014/08/08 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
JSON相关知识汇总
2015/07/03 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
Bootstrap基本组件学习笔记之面板(14)
2016/12/08 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
2017/04/22 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
安装Python的教程-Windows
2017/07/22 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
python实现决策树分类
2018/08/30 Python
深入理解Python异常处理的哲学
2019/02/01 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
python软件都是免费的吗
2020/06/18 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
同步和异步有何异同,在什么情况下分别使用他们?举例说明
2014/02/27 面试题
单位介绍信范文
2014/01/18 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
老人节标语大全
2014/10/08 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
2014年教研工作总结
2014/12/06 职场文书
2015年党风廉政建设工作总结
2015/04/09 职场文书
学习雷锋主题班会
2015/08/14 职场文书
python实现Nao机器人的单目测距
2021/09/04 Python
基于Redission的分布式锁实战
2022/08/14 Redis