nginx环境中配置网站目录权限设置

在nginx与php环境下,务必要设置好nginx目录权限,安全的目录权限设置,将是网站安全的一道屏障,有需要的朋友做个参考吧

配置权限的原则是,在保证网站正常运行下,尽量给最低权限。

nginx目录权限配置:
1、nginx进程用户是默认用户wwwboy;(暂时还不知道nginx进程用户会对服务器什么地方的权限有影响,配置nginx好像都没碰到权限设置问题)
2、php-fpm进程用户配置为wwwboy;
3、网站目录所有者设置为ftpuser,由于需要在FTP中对网站文件进行下载(读取)、上传(写入),ftpuser肯定对网站目录有读写权限。
关键点:php-fpm 子进程所使用的用户,不能是网站文件所有者。
网站文件所有者和php-fpm进程用户设为不同的好处是在PHP程序中无法对网站文件进行修改,这样即使网站被挂马了,也能降低很多损失,例如,对方无法在你的正常代码里混入后门。
以前总习惯性地把缓存目录权限设置为777,这回既然注意到安全问题,就想顺便弄清楚一下缓存目录怎么设置才正确合理并安全。

目录访问权限设置
1.目录列表(directory listing)
nginx让目录中的文件以列表的形式展现只需要一条指令这样就不会返回403
autoindex on;
autoindex可以放在location中,只对当前location的目录起作用。你也可以将它放在server指令块则对整个站点都起作用。或者放到http指令块,则对所有站点都生效。
下面是一个简单的例子:
代码如下 复制代码

server {
        listen   80;
        server_name  domain.com www.domain.com;
        access_log  /var/...........................;
        root   /var/www/html;
        location / {
                index  index.php index.html index.htm;
        }
        #允许访问 /api 目录
        location /api {
               autoindex on;
        }
}

2.nginx禁止访问某个目录
跟Apache的Deny from all类似,nginx有deny all指令来实现。
禁止对叫dirdeny目录的访问并返回403 Forbidden,可以使用下面的配置:
代码如下 复制代码

location /dirdeny {
      deny all;
      return 403;
}

autoindex_exact_size off;//人性化方式显示文件大小否则以byte显示
autoindex_localtime on;//按服务器时间显示,否则以gmt时间显示,gmt时间指格林尼治时间
autoindex_exact_size off;
默认为on,显示出文件的确切大小,单位是bytes。
改为off后,显示出文件的大概大小,单位是kB或者MB或者GB
autoindex_localtime on;
默认为off,显示的文件时间为GMT时间。
改为on后,显示的文件时间为文件的服务器时间
上传目录无执行权限
代码如下 复制代码


location ~ ^/upload/.*.(php|php5)$ 
{ 
deny all; 
}

设置目录浏览
1、打开/usr/local/nginx/conf/nginx.conf,找到WebServer配置处,加入以下内容:
代码如下 复制代码

location /soft/ {
root /var/www/;  此处为soft的上一级目录
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}

文章转自:http://www.111cn.net/sys/nginx/61498.htm

你可能感兴趣的:(PHP,Nginx,Linux)