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 empty函数 使用说明
Aug 10 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
php密码生成类实例
Sep 24 PHP
php实现session自定义会话处理器的方法
Jan 27 PHP
PHP使用适合阅读的格式显示文件大小的方法
Mar 05 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
Mar 19 PHP
php判断当前操作系统类型
Oct 28 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
Mar 29 PHP
无需数据库在线投票调查php代码
Jul 20 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
laravel 时间格式转时间戳的例子
Oct 11 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取进制余数函数代码
2012/01/19 PHP
php防止网站被刷新的方法汇总
2014/12/01 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
js 内存释放问题
2010/04/25 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
2013/01/06 Javascript
js数组Array sort方法使用深入分析
2013/02/21 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
JS中的防抖与节流及作用详解
2019/04/01 Javascript
Vue可自定义tab组件用法实例
2019/10/24 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
python使用插值法画出平滑曲线
2018/12/15 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
tensorflow 模型权重导出实例
2020/01/24 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
法国时尚童装网站:Melijoe
2016/08/10 全球购物
navabi英国:设计师大码女装
2019/06/25 全球购物
2014庆六一活动方案
2014/03/02 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
幼儿园教学反思范文
2016/03/02 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL