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和AJAX创建RSS聚合器的代码
Mar 13 PHP
php替换超长文本中的特殊字符的函数代码
May 22 PHP
检查php文件中是否含有bom的函数
May 31 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
Oct 06 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
PHP JSON格式的中文显示问题解决方法
Apr 09 PHP
PHP.ini安全配置检测工具pcc简单介绍
Jul 02 PHP
yum命令安装php7和相关扩展
Jul 04 PHP
Yii2框架制作RESTful风格的API快速入门教程
Nov 08 PHP
php根据年月获取当月天数及日期数组的方法
Nov 30 PHP
浅谈PHP中的错误处理和异常处理
Feb 04 PHP
PHP+Apache环境中如何隐藏Apache版本
Nov 24 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发送post请求函数分享
2014/03/06 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
jquery实现表格本地排序的方法
2015/03/11 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
2016/05/07 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
详解基于angular路由的requireJs按需加载js
2017/01/20 Javascript
javascript中关于类型判断的一些疑惑小结
2018/10/14 Javascript
AngularJS上传文件的示例代码
2018/11/10 Javascript
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
详解Python的Django框架中的中间件
2015/07/24 Python
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
Python管理Windows服务小脚本
2018/03/12 Python
python实现周期方波信号频谱图
2018/07/21 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
简单的命令查看安装的python版本号
2020/08/28 Python
python中最小二乘法详细讲解
2021/02/19 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
娇韵诗俄罗斯官方网站:Clarins俄罗斯
2020/10/03 全球购物
思想汇报范文
2013/11/04 职场文书
公司接待方案
2014/03/08 职场文书
地质灾害防治方案
2014/05/14 职场文书
创意婚礼策划方案
2014/05/18 职场文书
报效祖国演讲稿
2014/09/15 职场文书
小学六一主持词开场白
2015/05/28 职场文书
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL
JS数组方法some、every和find的使用详情
2021/10/05 Javascript
Oracle中update和select 关联操作
2022/01/18 Oracle
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电