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 相关文章推荐
动态新闻发布的实现及其技巧
Oct 09 PHP
PHP Stream_*系列函数
Aug 01 PHP
php设计模式 Prototype (原型模式)代码
Jun 26 PHP
使用PHP计算两个路径的相对路径
Jun 14 PHP
is_uploaded_file函数引发的不能上传文件问题
Oct 29 PHP
使用PHP强制下载PDF文件示例
Jan 17 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
php实现微信公众号主动推送消息
Dec 31 PHP
twig里使用js变量的方法
Feb 05 PHP
php实现数据库的增删改查
Feb 26 PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 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中MVC模式的模板引擎开发经验分享
2011/03/23 PHP
php调用shell的方法
2014/11/05 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
2016/03/16 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
一个对于js this关键字的问题
2007/01/09 Javascript
js过滤数组重复元素的方法
2010/09/05 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
2016/06/08 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
JS前端加密算法示例
2016/12/22 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
Vue-router 中hash模式和history模式的区别
2018/07/24 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
python实现的登陆Discuz!论坛通用代码分享
2014/07/11 Python
Python单链表的简单实现方法
2014/09/23 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
2017/09/11 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
python zip()函数的使用示例
2020/09/23 Python
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
英国最大的天然和有机产品在线零售商之一:Big Green Smile
2020/05/06 全球购物
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
酒店人事专员岗位职责
2013/12/19 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
经销商会议开幕词
2016/03/04 职场文书