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 常用函数库和一些实用小技巧
Jan 01 PHP
php 学习资料零碎东西
Dec 04 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
php中PDO方式实现数据库的增删改查
May 17 PHP
PHP数组操作类实例
Jul 11 PHP
ThinkPHP开发框架函数详解:C方法
Aug 14 PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
May 12 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
May 22 PHP
php实现带读写分离功能的MySQL类完整实例
Jul 28 PHP
PHP实现根据数组的值进行分组的方法
Apr 20 PHP
phpinfo的知识点总结
Oct 10 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
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
常用PHP框架功能对照表
2014/10/23 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
thinkPHP简单调用函数与类库的方法
2017/03/15 PHP
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
Jquery validation remote 验证的缓存问题解决方法
2014/03/25 Javascript
JavaScript列表框listbox全选和反选的实现方法
2015/03/18 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
javascript实现输出指定行数正方形图案的方法
2015/08/03 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
前端性能优化及技巧
2016/05/06 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
2017/11/14 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
python 实用工具状态机transitions
2020/11/21 Python
Canvas实现放大镜效果完整案例分析(附代码)
2020/11/26 HTML / CSS
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
旅游管理实习自我鉴定
2013/09/29 职场文书
二手房买卖协议书
2014/04/10 职场文书
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
毕业实习单位意见
2015/06/04 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
聊聊Lombok中的@Builder注解使用教程
2021/11/17 Java/Android