Nginx创建密码验证保护网站目录

在生产环境中,网站需要授权访问的场景非常之多,比如数据库管理工具:phpMyAdminMysqlUpBackUp等等。有时还需要一些私有目录文件的保护,为了实现这一伟大目标,我们就需要用到Nginx location匹配规则,下面将进行讲解。

1.创建htpasswd文件

$ vim /usr/local/nginx/conf/htpasswd

添加以下内容:
renwole:xEmWnqjTJipoE

此文件的书写格式是:

用户名:密码

注意:每行一个用户和密码,这里的password不是明文,而是将password进行crypt(3)加密后的字符串。

2.密码生成

可以打开以下网址输入用户信息进行密码生成:

http://tool.oschina.net/htpasswd

3.Nginx加密目录配置

在Nginx虚拟主机配置文件中的合适区域加入以下内容:

如果保护tools目录:

location ^~ /tools/ {
auth_basic            "Restricted Area";
auth_basic_user_file  conf/htpasswd;
}

说明:若不加 ^~ 只能对目录进行弹窗验证,访问此目录下的文件则无需验证。

如果保护整个网站根目录:

location / {
auth_basic            "Restricted Area";
auth_basic_user_file  conf/htpasswd;
}

添加需要保护的目录后,重载Nginx配置文件,否则不生效。