最新公告
  • 欢迎您光临编程知识分享网 加入我们
  • nginx设置目录权限(显示目录、禁止访问目录、以用户密码身份访问)

    1、目录列表(directory listing)

    nginx让目录中的文件以列表的形式展现只需要一条指令:

    autoindex on;

    autoindex可以放在location中,只对当前location的目录起作用。

    你也可以将它放在server指令块则对整个站点都起作用。

    或者放到http指令块,则对所有站点都生效。

    下面是一个简单的例子:

    server {
            listen   80;
            server_name  domain.com www.domain.com;
            access_log  /var/...........................;
            root   /path/to/root;
            location / {
                    index  index.php index.html index.htm;
            }
            location /somedir {
                   autoindex on; 
            }
    }

     

    有时候服务器会报这种漏洞:管理后台对外,意思就是,互联网上的任何人都可以访问这个文件,其实,任何人访问这个文件这是很正常的,但是有些后台的东西肯定是不允许任何人去访问的对吗?比如说:日志文件……想要避免这个问题,我们就需要禁止访问或者是以用户密码的方式来访问;

     

    如果你想服务器其它的目录文件也达到这样的效果,原理是一样的;

     

    2、nginx禁止访问某个目录

    跟Apache的Deny from all类似,nginx有deny all指令来实现。

     

    禁止对叫dirdeny目录的访问并返回403 Forbidden,可以使用下面的配置:

    location /dirdeny {
     deny all; 
    return 403;
    }

     

     

    问题三:

    有时我们web服务器上的某个文件夹只允许特定人员访问,又应该怎么办?这时我们需要在nginx配置文件中配置该文件夹的访问权限。

     

    3、在nginx中我们使用htpasswd来生成用户名单

     

    3.1、下载这个python文件:

    http://trac.edgewall.org/export/10770/trunk/contrib/htpasswd.py (nginx wiki里推荐的)

     

    3.2、运行步骤:

    chmod 777 htpasswd.py

    ./htpasswd.py -c -b htpasswd username password

     

    -c为生成文件;htpasswd为文件名;username为用户名;password为密码;

    nginx 的 http auth basic 的密码是用 crypt(3) 加密的

     

    3.3、我们把生成的htpasswd文件放到/etc/nginx目录中,修改权限chmod 400 htpasswd来保护一下该文件。

     

    3.4、修改nginx配置文件

    server {
    server_name www.domain.com;
    root /usr/share/nginx/html;
    location /devdoc {
    autoindex on;#显示文件列表
    index index.html index.htm;#默认首页
    charset utf-8;#编码
    auth_basic "Restricted";#访问权限类型
    auth_basic_user_file /etc/nginx/htpasswd;#用户名单
    }
    }

     

    3.5、重启nginx,并访问: www.domain.com/devdoc则会做如下提示:

    详细说明:

    ngx_http_auth_basic_module模块实现让访问时,只有输入正确的用户密码才允许访问web内容。web上的一些内容不想被其他人知道,但是又想让部分人看到。

     

    nginxhttp auth模块以及Apache http auth都是很好的解决方案。

     

    默认情况下nginx已经安装了ngx_http_auth_basic_module模块,如果不需要这个模块,可以加上 –without-http_auth_basic_module 。

     

    nginx basic auth指令

    语法: auth_basic string | off;

    默认值::auth_basic off;

    配置段: http, server, location, limit_except

     

    默认表示不开启认证,后面如果跟上字符,这些字符会在弹窗中显示。

     

    auth_basic_user_file指令

    语法::auth_basic_user_file file;

    默认值:—

    配置段: http, server, location, limit_except

     

    补充:

    某些网站系统需要用户上传图片等文件到某些目录下,难免程序有些漏洞,导致用户上传了php、cgi等等可执行的文件,导致网站陷入非常为难的境地. 此时我们可以通过nginx来禁止用户访问这些目录下的可执行文件。

    nginx配置:

    location ~ ^/(uploads|images)/.*\.(php|php5|jsp)$ {
    deny all;
    }

     

    tips:在目录uploads、images目录下面的所有php、jsp都不能访问。

    也有人会选择这样写:

    location ~ ^/(uploads|images)/.*\.(php|php5|jsp)$ {
    return 403;
    }

     

    这样也是一样的,如果配置了403页面,会跳转过去。

    403页面配置:

    error_page 403 http://www.ittce.com/public/404.html;

     

    还有一些问题也需要注意,就是我们可能在站点的任一目录下放置了.sql文件,我们可以通过下面的方式禁止浏览器访问。

    location ~.*\.sql {
    deny all;
    }

     

    这样,任一目录的sql文件都不会被用户访问到了。

     

    赞赏

    微信赞赏支付宝赞赏

    编程知识分享网,一个有趣的平台!
    编程知识分享网|编程教程|资源下载|源码下载 » nginx设置目录权限(显示目录、禁止访问目录、以用户密码身份访问)

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    关于编程知识分享网(www.ittce.com)
    编程知识分享网,一个有趣的平台,小心有毒!

    发表评论

    提供最优质的资源集合

    立即查看 了解详情
    升级SVIP尊享更多特权立即升级