1.安装HTTPD Tools工具包
这里要使用到一个命令行工具htpassword
,此工具可以生成访问密码。此命令是httpd-tools
包的一部分,因此第一步是安装此工具包。Centos可以直接使用yum命令进行安装,你也可根据需要选择编译安装:
[deploy@instance-ea0dh7mn ~]$ sudo yum -y install httpd-tools
2.使用htpassword命令生成账号信息
[deploy@instance-ea0dh7mn ~]$ sudo htpasswd -c /usr/local/nginx/conf/passwd test123
New password:
Re-type new password:
Adding password for user test123
说明:htpasswd生成的密码和关联的用户名将存储在您指定的文件中。密码将被加密,文件名可以是你喜欢的任意名称。本文的账号信息保存在/usr/local/nginx/conf/passwd
。这里的test123
是用户名,你可以根据需要自行设置成其它用户名。执行命令时会要求你连续输入两次密码。输入成功后,会提示已经为test123这个用户添加了密码。
我们可以看下最后生成的密码文件的内容:
[deploy@instance-ea0dh7mn ~]$ cat /usr/local/nginx/conf/passwd
test123:$AbP1$Dhl87hIu$BXyCfQ7hiEos1DiqgwEYcZ16
其中test123就是用户名 ,分号后面就是加密过后的密码。
3.修改nginx配置文件nginx.conf,将生成的账号文件路劲配置进去
找到 nginx 配置文件,因为我们要对整个站点开启验证,所以在配置文件中的第一个server修改如下:
[deploy@instance-ea0dh7mn ~]$ sudo vi /usr/local/nginx/conf/nginx.conf
.......
server {
listen 80;
server_name localhost;
index index.html;
root /home/wwwroot/default;
#新增下面两行
auth_basic "My Server"; #这里服务器的提示信息,可以随意设置
auth_basic_user_file /usr/local/nginx/conf/passwd; #这里是加密文件路劲(推荐)
#auth_basic_user_file passwd; 也可以使用此种相对路径的方式,前提是passwd和nginx.conf文件在同一个目录下
location /{
.......
}
}
.......
4.重启nginx
[deploy@instance-ea0dh7mn ~]$ ./nginx -t #检查配置文件是否正确
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[deploy@instance-ea0dh7mn ~]$ ./nginx -s reload
5.访问站点进行测试
如果出现上面的的弹窗就说明一切配置完成
如果不输入账号信息点击取消就会出现401 Authorization Required
的提示信息。
这样就完成了Nginx资源访问权限设置。