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 相关文章推荐
Linux下ZendOptimizer的安装与配置方法
Apr 12 PHP
加强版phplib的DB类
Mar 31 PHP
PHPEXCEL 使用小记
Jan 06 PHP
PHP使用json_encode函数时不转义中文的解决方法
Nov 12 PHP
PHP获取当前日期和时间及格式化方法参数
May 11 PHP
php实现概率性随机抽奖代码
Jan 02 PHP
php下载远程大文件(获取远程文件大小)的实例
Jun 17 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
php实现微信支付之退款功能
May 30 PHP
实例讲解PHP验证邮箱是否合格
Jan 28 PHP
THINKPHP5.1 Config的配置与获取详解
Jun 08 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
Mar 09 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如何连接sql server
2015/10/16 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
2016/06/05 PHP
给moz-firefox下添加IE方法和属性
2007/04/10 Javascript
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
JavaScript的继承的封装介绍
2013/10/15 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
微信小程序(三):网络请求
2017/01/13 Javascript
bootstrap 模态框(modal)实现水平垂直居中显示
2017/01/23 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
微信小程序获取音频时长与实时获取播放进度问题
2018/08/28 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
React Native 混合开发多入口加载方式详解
2019/09/23 Javascript
angular8和ngrx8结合使用的步骤介绍
2019/12/01 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
python在指定目录下查找gif文件的方法
2015/05/04 Python
Python算术运算符实例详解
2017/05/31 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
python的列表List求均值和中位数实例
2020/03/03 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
外包公司软件测试工程师
2014/11/01 面试题
简历中个人自我评价分享
2014/03/15 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
汽车车尾标语大全
2015/08/11 职场文书
《颐和园》教学反思
2016/02/19 职场文书
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android