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内核介绍及扩展开发指南―基础知识
Sep 11 PHP
php数组函数序列之array_keys() - 获取数组键名
Oct 30 PHP
php实现统计邮件大小的方法
Aug 06 PHP
php中的Base62类(适用于数值转字符串)
Aug 12 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
Sep 28 PHP
写一段简单的PHP建立文件夹代码
Jan 06 PHP
使用PHP similar text计算两个字符串相似度
Nov 06 PHP
php集成动态口令认证
Jul 21 PHP
Laravel5.1自定义500错误页面示例
Oct 09 PHP
简述php环境搭建与配置
Dec 05 PHP
详解PHP数据压缩、加解密(pack, unpack)
Dec 17 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
Mar 09 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
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
2011/03/19 PHP
PHP Directory 函数的详解
2013/03/07 PHP
深入Nginx + PHP 缓存详解
2013/07/11 PHP
php setcookie函数的参数说明及其用法
2014/04/20 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
javascript兼容性(实例讲解)
2017/08/15 Javascript
Vue核心概念Getter的使用方法
2019/01/18 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
Python ZipFile模块详解
2013/11/01 Python
Python原始字符串(raw strings)用法实例
2014/10/13 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
使用Python更换外网IP的方法
2018/07/09 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
python获取中文字符串长度的方法
2018/11/14 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
浅谈python出错时traceback的解读
2020/07/15 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
传播学专业毕业生自荐信
2013/11/04 职场文书
幼儿园保教管理制度
2014/02/03 职场文书
恶搞卫生巾广告词
2014/03/18 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
百家讲坛观后感
2015/06/12 职场文书
电工实训心得体会
2016/01/14 职场文书
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL