一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

linux中Nginx设置目录密码保护3种方法

时间:2015-05-09 编辑:简简单单 来源:一聚教程网

当不允许公开访问时一些网站路径时,比如网站后台密码,我们给利用Web服务器给路径加密认证,只用输入正确的用户名和密码才能进去访问。Apache有这样的功能,Nginx也可以。下面简单介绍Nginx给某些路径加密。

生成密码

方法一、用 Apache 的 htpasswd 工具来创建用户密码文件

使用htpasswd的前提是你已经安装apache。


# htpasswd -b -c filename username passwd
Adding password for user ******

filename为创建好的文件,把这个文件放在无法通过WEB路径访问的目录下,在Nginx配置文件中给出这个文件的绝对路径地址 。username为用户名,passwd为密码。

方法二、使用perl 创建密码

考虑到安装了Nginx的用户未必安装Apache(httpd),如果只是为了生成个密码安装它,也未免有点大材小用。下面介绍用perl程序来生成密码。

创建程序:


# vim genpwd.pl

写入如下内容:


#!/usr/bin/perl
use strict;
my $genpwd=$ARGV[0];
print crypt($genpwd,$genpwd)."\n";

给予可执行权限:


# chmod u+x genpwd.pl

生成密码:


# ./genpwd.pl password
papAq5PwY/QQM

把输出的密码写入到一个密码文件中,格式如下:


用户名:加密生成的密码
一行一个账户。
方法三:在线生成
使用开源中国社区提供的在线工具生成,比较方便。点击这里跳转

 
设置Nginx

如果使用了多域名虚拟主机配置对某个目录进行加密时,修改配置文件:
 
location / {
    root   /data/www/domain.com;
    index  index.php index.html index.htm;
 try_files $uri $uri/ /index.php?q=$uri&$args;
 
 location ~ ^/demo/book/.* {
   autoindex on;
   autoindex_exact_size off;
   autoindex_localtime on;
   charset utf-8,gbk,big5;
          auth_basic "Password Needed";
   auth_basic_user_file /usr/local/nginx/vhosts/auth/authuser;
       }      
     }
“location ~ ^/demo/book/.* {…}”这样子可以禁止未使用密码时直接访问该目录下的文件,达到我们想要的效果。

热门栏目