nginx设立网站密码访问、目录认证保护

nginx设置网站密码访问、目录认证保护
【前期准备】
首先你要知道你的nginx装在哪里,配置文件在哪里。
我的配置文件及目录情况说明:
/usr/local/nginx/conf/nginx.conf

【步骤】
1、找到nginx.conf文件,在nginx.conf 文件中对应的 server 段中 添加引用:
    location /
    {
        auth_basic "Please enter Password";
        auth_basic_user_file nginx_htpasswd.pl;
    } 


说明:

location /
“/”为你要限制访问的的路径,这里指的是根目录。
auth_basic "Please enter Password";//提示信息,auth_basic指令包含一个具有测试用户名和密码的HTTP基本认证,指定的参数将用于认证域。如果将值设置为“off”则忽略下级指令继承的动作。
auth_basic_user_file nginx_htpasswd.pl;//指令为验证域指定了密码文件,0.6.7版本以后这里指定的文件是nginx.conf所在目录的相对路径,而不是–prefix指定的路径。我这里的nginx_htpasswd.pl文件就是和nginx.conf文件放在同一级目录下。

2、创建密码文件nginx_htpasswd.pl
vi /usr/local/nginx/conf/nginx_htpasswd.pl

内容如下(先输入以下脚本生成加密串):

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

保存以上内容。

进入命令行执行以下命令:

chmod 777 /usr/local/nginx/conf/nginx_htpasswd.pl

./usr/local/nginx/conf/nginx_htpasswd.pl 123456

执行后系统会输出123456对应的密文,将密文拷贝一份,从新打开nginx_htpasswd.pl文件,将密文以格式“用户名:密码密文”填入文件内容中,记得将原来的脚本内容清空。

其他一些说明:
nginx_htpasswd.pl这个文件的名字可以自己随意设置,
用户名 也是 自己随意设置 无需加密。
密码必须使用函数 crypt 加密。

以上配置好以后,从新启动nginx。访问你的网站。看看提示访问验证没。如果不能访问,或者提示403错误。检查下nginx的配置文件你刚才配置的文件对不对,主要是密文密码文件的路径对不对,如果书写没有问题,再看下nginx的日志,分析下。