Nginx下php-fpm防止跨站跨目录安全设置

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

而nginx + php-fpm fastcgi的方式,就需要多费费心啦~

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

方法1 在nginx 配置 fastcgi_param参数
在nginx的 php配置中 或者 在 包含的 include fastcgi.conf 文件中加入:

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 虚拟主机,都可以完美使用。都限制到自己的网站目录下。
本方法,非常推荐使用,本人就是用这个方法!!

方法2 在php.ini 中配置
在php.ini的末尾加入:

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

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

方法3 网站根目录下增加 .user.ini 文件。
在网站根目录下创建.user.ini 加入:

open_basedir=/home/wwwroot/blog.jiunile.com:/tmp/:/proc/

这种方式不需要重启nginx或php-fpm服务。安全起见应当取消掉.user.ini文件的写权限。

关于.user.ini文件的详细说明:http://php.net/manual/zh/configuration.file.per-user.php

发表评论

电子邮件地址不会被公开。 必填项已用*标注