一周文章推送:

文章名称:nginx + php-fpm fastcgi防止跨站、跨目录的安全设置

我们知道apache php mod的方式可以很方便的配置 open_basedir 限制各个站点的目录访问权限。

nginx + php-fpm fastcgi的方式需要这样做。

首先php的版本必须大于等于php5.3.3。

总限制 通过php-fpm.conf限制

在php-fpm.conf配置文件当中可以增加如下参数

env[TMP] = /tmp/

env[TMPDIR] = /tmp/

env[TEMP] = /tmp/

php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f webmaster@qq.com

php_admin_value[open_basedir] = /home/wwwroot/:/tmp/:/var/tmp:/proc/

php_admin_value[session.save_path] = /tmp/

php_admin_value[upload_tmp_dir] = /tmp/

slowlog = /usr/local/php/var/log/$pool.log

request_slowlog_timeout = 3s

可以配置env,php_admin_value。

那么配置

1

php_admin_value[open_basedir] = /home/wwwroot/:/tmp/:/var/tmp:/proc/

就可以把整个php脚本的访问目录控制住了。

如果方法1 方法2 方法3未配置的情况下,那么open_basedir的值就为本设置的值,如果方法1 方法2 方法3设置了,那么就是新设置的值。

另外的我这里打开了php慢执行。

slowlog 写保存路径,request_slowlog_timeout写时间。

更多的请看php官网手册 http://www.php.net/manual/en/install.fpm.configuration.php

方法1 在nginx 配置 fastcgi_param参数

在nginx的 php配置中 或者 在 包含的 include fastcgi.conf 文件中加入:

1

fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/:/proc/";

意思是设置fastcgi 参数 PHP_VALUE 的open_basedir。

$document_root php文档根目录,就是 nginx 配置项 root 配置的网站目录。

/tmp/目录需要有权限,默认放seesion的位置,以及unixsock。

/proc/ 可以让php查看系统负载信息。

本方法加的各个vhost 虚拟主机,都可以完美使用。都限制到自己的网站目录下。

非常推荐使用, 总限制 + 方法1 这样的组合配置方式!!!!!

方法2 在php.ini 中配置

在php.ini的末尾加入:

1234

[HOST=www.iamle.com]open_basedir=/home/wwwroot/www.iamle.com:/tmp/:/proc/[PATH=/home/wwwroot/www.iamle.com]open_basedir=/home/wwwroot/www.iamle.com:/tmp/:/proc/

本方法的弊端,如果有泛域名解析,比如 *.iale.com 。这个就不好控制。

方法3 网站根目录下增加 .user.ini 文件。

在php.ini中找到user_ini.filename 、 user_ini.cache_ttl 去掉前面的分号。

12345678

; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini"user_ini.filename = ".user.ini"; To disable this feature set this option to empty value;user_ini.filename =; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds(5 minutes)user_ini.cache_ttl = 300

在网站根目录下创建.user.ini 加入:

1

open_basedir=/home/wwwroot/www.iamle.com:/tmp/:/proc/

这种方式不需要重启nginx或php-fpm服务。

特别注意,需要取消掉.user.ini文件的写权限,这个文件只让最高权限的管理员设置为只读。

方法1设置后,.user.ini的设置就不起作用了。 关于.user.ini文件的详细说明: http://php.net/manual/zh/configuration.file.per-user.php

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2014-06-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏猿人谷

常用命令(ubuntu)

1.打开终端的方法 Ubuntu 中按左侧栏的第一个“面板主页(Dash 主页)”(可以按win键调出),在里面输入terminal可以打开终端,另外打开终端的...

38380
来自专栏地方网络工作室的专栏

Shell 命令行批量处理图片文件名

Shell 命令行批量处理图片文件名 从网上下载了一堆图片,有的是*.jpg的,有的是*.jpeg的。并且文件名有长有短,很是糟心。因此,我想把这些文件给全部整...

341100
来自专栏LanceToBigData

linux(三)之linux常用命令二

今天就是星期五了,又可以休息两天了。有点小激动,开心。不过还是要加油,因为还有很多东西等着我去学习呢! 七、chmod  作用:修改文件的权限 7.1、命令...

23980
来自专栏PHP实战技术

你应该这个姿势学习php(3)

1、ob_start() 开启文件缓存 2、ob_get_contents() 得到缓存中的内存 3、ob_get_length() 得到缓冲区的长度 4、ob...

30070
来自专栏Java帮帮-微信公众号-技术文章全总结

Java多线程详解1

Java多线程详解 ? ? ? ? Java线程:概念与原理 一、操作系统中线程和进程的概念 现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。 进...

47890
来自专栏LEo的网络日志

shell技巧分享(四)

36880
来自专栏SDNLAB

ONOS集群原理及流程分析

一、ONOS集群原理简介 ONOS是一个分布式的控制器,为了提高数据的读写效率,采用自实现的基于In-Memory的Key-Value数据存储系统。针对实际的需...

40680
来自专栏Hongten

python开发_python文件操作

官方API:os-Miscellaneous operating system interfaces

11620
来自专栏Golang语言社区

Go包管理的探索与实践

引言:刚学Go没多久,但是很快我就发现了Go的一个特别坑爹的地方 —— 包管理。当然不只是GFW的问题,更多的是有的时候,每个项目使用的包的版本并不是完全一致的...

422100
来自专栏PHP在线

LINUX软链接和硬链接

1.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产...

47450

扫码关注云+社区

领取腾讯云代金券