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
Dec 13 PHP
实例(Smarty+FCKeditor新闻系统)
Jan 02 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
Oct 29 PHP
比较详细PHP生成静态页面教程
Jan 10 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
Jan 19 PHP
PHP判断浏览器、判断语言代码分享
Mar 05 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
64位windows系统下安装Memcache缓存
Dec 06 PHP
Zend Framework教程之Application用法实例详解
Mar 14 PHP
简介PHP的Yii框架中缓存的一些高级用法
Mar 29 PHP
PHP 与 UTF-8 的最佳实践详细介绍
Jan 04 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
Mar 15 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 Ajax中文乱码问题解决方法
2009/02/27 PHP
php strlen mb_strlen计算中英文混排字符串长度
2009/07/10 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
PHP页面中文乱码分析
2013/10/29 PHP
一个好用的PHP验证码类实例分享
2013/12/27 PHP
[原创]图片分页查看
2006/08/28 Javascript
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
JQuery 拾色器插件发布-jquery.icolor.js
2010/10/20 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
2011/03/28 Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
JavaScript伸缩的菜单简单示例
2013/12/03 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
JavaScript获取Url里的参数
2014/12/18 Javascript
js实现点击链接后延迟3秒再跳转的方法
2015/06/05 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
vue解决使用webpack打包后keep-alive不生效的方法
2018/09/01 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
举例详解Python中yield生成器的用法
2015/08/05 Python
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
浅谈Pandas 排序之后索引的问题
2018/06/07 Python
python绘制评估优化算法性能的测试函数
2019/06/25 Python
python 对象真假值的实例(哪些视为False)
2020/12/11 Python
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
连锁经营管理专业大学生求职信
2013/10/30 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
小学生中国梦演讲稿
2014/04/23 职场文书
领导班子四风表现材料
2014/08/23 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
2016党员干部政治学习心得体会
2016/01/23 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python
MySQL导致索引失效的几种情况
2022/06/25 MySQL