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 相关文章推荐
在PHP3中实现SESSION的功能(三)
Oct 09 PHP
PHP输出时间差函数代码
Jan 28 PHP
php使用qr生成二维码的示例分享
Jan 20 PHP
php中file_get_contents与curl性能比较分析
Nov 08 PHP
PHP获取ip对应地区和使用网络类型的方法
Mar 11 PHP
php中使用sftp教程
Mar 30 PHP
php生成图片缩略图的方法
Apr 07 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
详解php框架Yaf路由重写
Jun 20 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
laravel5.4生成验证码的实例讲解
Aug 05 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 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中操作MySQL数据库的一些要注意的问题
2006/10/09 PHP
php chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
Yii中render和renderPartial的区别
2014/09/03 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
详解YII关联查询
2016/01/10 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
2016/05/10 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
2016/12/08 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
简单快速的实现js计算器功能
2017/08/17 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
用JS实现一个简单的打砖块游戏
2019/12/11 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
浅谈Python 对象内存占用
2016/07/15 Python
以SQLite和PySqlite为例来学习Python DB API
2020/02/05 Python
REISS美国官网:伦敦最受欢迎的时尚品牌
2019/08/16 全球购物
四个太阳教学反思
2014/02/01 职场文书
幼儿园教师教学反思
2014/02/06 职场文书
经典商业广告词
2014/03/13 职场文书
家长对老师的评语
2014/04/18 职场文书
节能环保标语
2014/06/12 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP
Python使用华为API为图像设置多个锚点标签
2022/04/12 Python
Java实现带图形界面的聊天程序
2022/06/10 Java/Android