nginx 目录权限设置方法(显示目录、禁止访问目录、以用户密码身份访问)

问题一:

因为nginx默认情况下是不允许目录中的文件以列表形式来显示的;如果经常用过nginx的人都会明白这一点,也是为了安全着想;但总有些时候我们是需要把文件列出来的,对吗?

 

1、目录列表(directory listing)

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

autoindex on;

 

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

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

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

 

下面是一个简单的例子:

  1. server {
  2.         listen   80;
  3.         server_name  domain.com www.domain.com;
  4.         access_log  /var/...........................;
  5.         root   /path/to/root;
  6.         location / {
  7.                 index  index.php index.html index.htm;
  8.         }
  9.         location /somedir {
  10.                autoindex on; 
  11.         }
  12. }

 

问题二:

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

管理后台对外漏洞

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

 

2、nginx禁止访问某个目录

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

 

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

  1. location /dirdeny {
  2.  deny all; 
  3. return 403;
  4. }

 

问题三:

有时我们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配置文件

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

 

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

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

 

详细说明:

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

    A+
发布日期:2017年06月16日 18:43:17  所属分类:Nginx
最后更新时间:2017-06-16 18:57:35
付杰
  • ¥ 1999.9元
  • 市场价:20000元
  • ¥ 498.0元
  • 市场价:498.0元
  • ¥ 199.0元
  • 市场价:399.0元
  • ¥ 1.0元
  • 市场价:9.9元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  0   博主  0

  1. 头像 小明 0

    很不错,有时候的确不想外面人访问,而且有些文件也有需要保密。