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 相关文章推荐
实用函数9
Nov 08 PHP
php xfocus防注入资料
Apr 27 PHP
php is_file 判断给定文件名是否为一个正常的文件
May 10 PHP
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
深入探讨<br />和 \r\n两者有什么区别??
Jun 05 PHP
php 批量生成html,txt文件的实现代码
Jun 26 PHP
php引用传值实例详解学习
Nov 06 PHP
PHP查询快递信息的方法
Mar 07 PHP
详解EventDispatcher事件分发组件
Dec 25 PHP
php curl常用的5个经典例子
Jan 20 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
php实现等比例压缩图片
Jul 26 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 imagecreatetruecolor 创建高清和透明图片代码小结
2010/05/15 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
PHP获取当前页面URL函数实例
2014/10/22 PHP
dropdownlist之间的互相联动实现(显示与隐藏)
2009/11/24 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
关于js注册事件的常用方法
2013/04/03 Javascript
jquery查找tr td 示例模拟
2014/05/08 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
JQuery控制Radio选中方法分析
2015/05/29 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
vue+SSM实现验证码功能
2018/12/07 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
2019/05/30 Javascript
js实现坦克移动小游戏
2019/10/28 Javascript
python创建和使用字典实例详解
2013/11/01 Python
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
Spark处理数据排序问题如何避免OOM
2020/05/21 Python
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
Lucene推荐的分页方式是什么?
2015/12/07 面试题
送给程序员的20个Java集合面试问题
2014/08/06 面试题
后勤自我鉴定
2013/10/13 职场文书
高中生职业生涯规划书
2014/02/24 职场文书