现在的位置: 首页nginx, secure>正文
nginx下php-fpm防止跨站跨目录的安全设置
2014年04月29日 nginx, secure 暂无评论 ⁄ 被围观 5,780 view+

我们知道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.iamle.com]
open_basedir=/home/wwwroot/blog.jiunile.com:/tmp/:/proc/
[PATH=/home/wwwroot/blog.jiunile.com]
open_basedir=/home/wwwroot/blog.jiunile.com:/tmp/:/proc/

本方法的弊端,如果有泛域名解析,比如 *.jiunile.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

来源:http://www.iamle.com/

给我留言

留言无头像?


×
腾讯微博